首页 > 其他分享 >快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台

时间:2023-04-21 21:32:13浏览次数:75  
标签:1.17 Kubernetes kubernetes kubectl -- master dashboard yum kubeadm

在上一篇我们已经初步认识了Kubernetes,在本篇我们就开始着手搭建kubernetes,具体操作如下:

1.环境准备

(1).环境说明

节点名称

机器IP

系统

master

10.2.3.191

CentOS7.7

node1

10.2.3.192

CentOS7.7

node2

10.2.3.190

CentOS7.7

(2).禁止swap(三台机器上都操作)
swapoff -a      #临时

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github

改配置文件/etc/fstab(永久生效)

vim /etc/fstab

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_docker_02

(3).关闭防火墙、selinux(三台机器上都操作)
(4).修改hosts(三台机器上都操作)

vim /etc/hosts

10.2.3.191  k8s-master
10.2.3.192  k8s-node1
10.2.3.190  k8s-node2
(5).修改三台机器的hostname
1).master
hostname k8s-master
vim /etc/sysconfig/network

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_03

2).node1
hostname k8s-node1

vim /etc/sysconfig/network

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_docker_04

3).node2
hostname k8s-node2

vim /etc/sysconfig/network

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_05

(6).安装docker(三台机器上都操作)

此处安装的是docker最新版本19.03.6

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl enable docker
systemctl start docker

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_06

(7).安装kubeadm、kubectl、kubelet(三台机器上都操作)
kubeadm:用于初始化Cluster
kubectl:是一个客户端,管理k8s集群的。是Kubernetes命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。  
kubelet:运行在Cluster所有节点上,负责启动Pod和容器。

添加阿里云的yum源:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

查看yum源是否配置成功:

yum info kubeadm

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_07

安装这3个工具

yum install -y kubelet kubeadm kubectl

查看是否安装成功

rpm -qa|grep kube

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_docker_08

将kubelet启

systemctl enable kubelet
systemctl start kubelet

2.部署kubernetes master(在master上执行)

首先执行以下命令

echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

部署kubernetes

kubeadm init \
--apiserver-advertise-address=10.2.3.191 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=1.17.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_09

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_10

要开始使用群集,需要运行以下命令:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

此时可以查看节点信息,发现只有一个master

kubectl get nodes

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_11

此时显示 master的状态是 NotReady

此时还要记录下来安装完成的加入node节点命令(后续会使用到,master节点上不用执行了),如下:

kubeadm join 10.2.3.191:6443 --token t3gjda.3lynr5n09p0rc5j8 \
--discovery-token-ca-cert-hash sha256:e8de00b05c32cbb454184ce126049309ab305e4cab1ee65c2ff136063a778c29

3.安装Pod网络插件(CNI) (在master上执行)

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i 's/quay.io\/coreos/registry.cn-beijing.aliyuncs.com\/imcto/g' kube-flannel.yml
kubectl apply -f kube-flannel.yml

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_12

此时再次查看 master的状态

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_13

已经显示为 Ready。

4.将node节点加入到集群中去(分别在node1和node2上执行)

(1).node1上执行以下语句

首先执行以下命令

echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

然后执行加入集群命令

kubeadm join 10.2.3.191:6443 --token t3gjda.3lynr5n09p0rc5j8 \
--discovery-token-ca-cert-hash sha256:e8de00b05c32cbb454184ce126049309ab305e4cab1ee65c2ff136063a778c29

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_14

(2).node2上执行以下语句

首先执行以下命令

echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

然后执行加入集群命令

kubeadm join 10.2.3.191:6443 --token t3gjda.3lynr5n09p0rc5j8 \
--discovery-token-ca-cert-hash sha256:e8de00b05c32cbb454184ce126049309ab305e4cab1ee65c2ff136063a778c29

此时可以在master上执行以下命令查看node节点是否已经加入

kubectl get nodes

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_15

5.创建Pod以验证集群是否正常(在master上执行)

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_16

此时可以在界面访问nginx,地址如下:

http://10.2.3.191:31185/

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_17

6.部署Dashboard (在master上执行)

dashboard的github仓库地址:https://github.com/kubernetes/dashboard

(1).部署dashboard

此时需要在master的hosts中配置如下  

vim /etc/hosts

199.232.28.133 raw.githubusercontent.com

要部署仪表板,请执行以下命令:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml 

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_18

查看是否已经运行

kubectl get pods -n kubernetes-dashboard

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_docker_19

(2).端口设置

在默认情况下,dashboard并不对外开放访问端口,这里简化操作,直接使用nodePort的方式将其端口暴露出来,修改serivce部分的定义:

vi recommended.yaml 

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort          #增加的
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001     #增加
  selector:
    k8s-app: kubernetes-dashboard

删除刚才生成的配置信息

kubectl delete  -f recommended.yaml

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_20

再次部署

kubectl apply  -f recommended.yaml

查看状态

kubectl get pods -n kubernetes-dashboard

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_21

此时可以通过浏览器访问拉

https://10.2.3.191:30001/
(3).查看访问Dashboard的认证令牌
#创建虚拟账户,只面向应用不面向用户
kubectl create serviceaccount  dashboard-admin -n kube-system
#集群角色绑定
kubectl create clusterrolebinding  dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
获取token用户登录使用
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_github_22

此时根据获取的token登陆系统

eyJhbGciOiJSUzI1NiIsImtpZCI6InBTN2xEaGZCaGt5Y21aWGdkRlFzOS1nR0NHTFRsLWVOeTRnWDE4Q0RDV0UifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tMjg4dGoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYjc4MjRkNzgtZjUwNi00Yjk1LTk1ZjAtZDVhM2E0Y2ZlNGY2Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.uwUBZb00eOoXl1ivzTZz1HtMaUtL4T7ZnP0dTdun7v6MVXgQxI-K9nn1jFiOI57YsIRR6vSBvGlXYMLyzoh4nWcV8i7cte__4IG7Jl9_gVQ-KH58OZByleaI0W1kg3cT4DeEP8aHENt-WMglVINehn6ZEZ_XL0-h2fn_6hhDQRNXsFpFvwxcfnZBJ_eBKkXqbOEEMaoETF4K9mIc2chClIKZM5AXlFtMOHqwGgmpSdEBkWDIAjKWX_hIHJo-XdU3mFnhcYQyS9ZcssFMSniHysrJT_gt0F4uLylSHX0vUrtgOvj8MBPGPnFitIexdGzYrKIFZjlkQOaMPQGL8ClL2Q

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_23

快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台_vim_24

至此Kubernetes搭建完成。

标签:1.17,Kubernetes,kubernetes,kubectl,--,master,dashboard,yum,kubeadm
From: https://blog.51cto.com/u_13753753/6212012

相关文章

  • Kubernetes中使用Helm2的安全风险
    参考 http://rui0.cn/archives/1573英文文章 https://blog.ropnop.com/attacking-default-installs-of-helm-on-kubernetes/集群后渗透测试资源 https://blog.carnal0wnage.com/2019/01/kubernetes-master-post.htmlHelm介绍:Kubernetes是一个强大的容器调度系统,通常我们......
  • Kubernetes的核心技术与特性
    Kubernetes(通常简称为"k8s")是一个开源的容器编排系统,它可以自动化地部署、扩展和管理容器化应用程序。Kubernetes的出现解决了容器化应用程序的许多挑战,包括自动化部署、动态伸缩、负载均衡、容错和滚动升级等。本文将介绍Kubernetes的一些核心技术和特性,以及它们如何帮助开发人员......
  • 部署kubernetes-dashboard顺便搞懂kubernetes中的ServiceAccount和RBAC
    "种草"kubernetes-dashboard安装部署dashboard创建用于登录面板的ServiceAccount权限控制"种草"kubernetes-dashboardKubernetesDashboard是通用的用于管理Kubernetes集群的WebUI面板kubernetes-dashboard代码库readme中对自己的介绍:KubernetesDashboardi......
  • Kubernetes集群调度增强之超容量扩容
    作者:京东科技 徐宪章1什么是超容量扩容超容量扩容功能,是指预先调度一定数量的工作节点,当业务高峰期或者集群整体负载较高时,可以使应用不必等待集群工作节点扩容,从而迅速完成应用横向扩容。通常情况下HPA、ClusterAutosacler和超容量扩容同时使用以满足负载敏感度高的业务场景。超......
  • ansible-kubeadm在线安装k8s v1.19-v1.20版本
    ansible-kubeadm在线安装k8sv1.19-v1.20版本1.ansible-kubeadm在线安装k8sv1.19-v1.20版本安装要求确保所有节点系统时间一致操作系统要求:CentOS7.x_x64ansible机器与部署k8s集群做免密钥找一台服务器安装Ansible#yuminstallepel-release-y#yuminstallans......
  • Shifu物联网开发框架成为MicroK8s官方认证的Kubernetes插件
    Shifu物联网开发框架已经成为Kubernetes生态下MicroK8s官方认证的插件,这将极大地简化基于K8s的物联网应用程序的开发,帮助企业高效搭建获得安全、可控的生产级物联中台。MicroK8s是一个轻量级的CNCF认证的Kubernetes发行版,适用于云、工作站、边缘和物联网设备。Shifu用作K......
  • Kubernetes 如何保障容器可用性?一文介绍探针的使用
    有时候,应用因为无限循环或死锁而停止响应,为确保应用在这种情况下可以重新启动,需要有一种机制检查应用程序的运行状况,而不是依赖应用程序内部的检测。K8s主要提供了三种探针来针对这种机制:存活探针:用于检查容器是否正在运行。如果存活探针失败,则K8s认为该容器已死亡,并且将尝试重......
  • 云原生之在kubernetes集群下部署Mysql应用
    (云原生之在kubernetes集群下部署mysql应用)一、Mysql介绍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL使用了标准......
  • Kubernetes 集群 Pod 资源启动命令(六)
    启动命令编写配置文件创建pod_command.yaml文件,并编写如下内容,即在容器启动之后,向、opt/text.txt文件写入时间戳,执行命令主要通过command字段传入,类型为列表格式#编写yamlapiVersion:v1kind:Namespacemetadata:name:dev---apiVersion:v1kind:Podmetadata:......
  • Kubernetes(k8s)健康检查详解与实战演示(就绪性探针 和 存活性探针)
    一、概述Kubernetes中的健康检查主要使用就绪性探针(readinessProbes)和存活性探针(livenessProbes)来实现,service即为负载均衡,k8s保证service后面的pod都可用,是k8s中自愈能力的主要手段,主要基于这两种探测机制,可以实现如下需求:异常实例自动剔除,并重启新实例多种类型探针检......