原生Kubernetes云平台部署

案例——原生Kubernetes云平台部署

 

 

一、案例目标

(1)了解Kubernetes容器云平台的架构。

(2)了解Kubernetes容器云平台的基本原理。

(3)掌握使用Kubeadm部署Kubernetes集群。

二、案例分析

1.规划节点

主机名

节点

master

master节点

node

node节点

2.基础准备

所有节点安装好CentOS_7.5.1804系统,保持网络畅通。

三、案例实施

(1)配置Yum源

所有节点将提供的压缩包K8S.tar.gz上传至/root目录并解压。

tar -zxvf K8S.tar.gz

所有节点配置本地Yum源。

(2)升级系统内核

所有节点升级系统内核。

# yum upgrade -y

(3)配置主机映射

所有节点,修改/etc/hosts文件

 

(4)配置防火墙及SELinux

所有节点配置防火墙及SELinux。

(5)关闭Swap

Kubernetes的想法是将实例紧密包装到尽可能接近100%。所有的部署应该与CPU和内存限制固定在一起。 所以如果调度程序发送一个Pod到一台机器,它不应该使用交换。设计者不想交换,因为它会减慢速度。所以关闭Swap主要是为了性能考虑。

所有节点关闭Swap。

 

(6)配置时间同步

所有节点安装chrony服务。

yum install -y chrony

master节点修改/etc/chrony.conf文件,注释默认NTP服务器,指定上游公共NTP服务器,并允许其他节点同步时间。

 

master节点重启chronyd服务并设为开机启动开启网络时间同步功能。

 

node节点修改/etc/chrony.conf文件,指定内网master节点为上游NTP服务器,重启服务并设为开机启动。

 

所有节点执行chronyc sources命令,查询结果中如果存在以“^*”开头的行,即说明已经同步成功。

(7)配置路由转发

RHEL/CentOS7上的一些用户报告了由于iptables被绕过而导致流量路由不正确的问题,所以需要在各节点开启路由转发。

所有节点创建/etc/sysctl.d/k8s.conf文件,添加如下内容。

 

(8)配置IPVS

由于IPVS已经加入到了内核的主干,所以为kube-proxy开启IPVS的前提需要加载以下的内核模块。

在所有节点执行以下操作。

 

 

上面脚本创建了/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。

所有节点安装ipset软件包。

yum install ipset ipvsadm -y

(9)安装Docker

Kubernetes默认的容器运行时仍然是Docker,使用的是Kubelet中内置dockershim CRI实现。需要注意的是,由于在Kubernetes1.14的版本中,支持的版本有 1.13.1、 17.03、17.06、17.09、18.06和 18.09,所以这里统一使用Docker 18.09。

所有节点配置Docker Yum源并安装Docker,启动Docker引擎并设置开机自启,步骤参考Docker安装流程。

 

 

 

 

 

2. 安装Kubernetes集群

(1)配置Kubernetes Yum源

所有节点配置Kubernetes源。Kubernetes源可以采用下面网络Yum源,也可以采用上述配置的本地Yum源。

(2)安装工具

Kubelet负责与其他节点集群通信,并进行本节点Pod和容器生命周期的管理。Kubeadm是Kubernetes的自动化部署工具,降低了部署难度,提高效率。Kubectl是Kubernetes集群管理工具。

所有节点安装Kubernetes工具并启动Kubelet。

yum install -y kubelet-1.14.1 kubeadm-1.14.1 kubectl-1.14.1

systemctl enable kubelet && systemctl start kubelet

 

// 此时启动不成功正常,后面初始化的时候会变成功

(3)初始化Kubernetes集群

登录master节点,初始化Kubernetes集群。

 

[root@master ~]# kubeadm init --apiserver-advertise-address 10.24.2.8 --kubernetes-version="v1.14.1" --pod-network-cidr=10.16.0.0/16  --image-repository=registry.aliyuncs.com/google_containers

kubeadm join 192.168.50.19:6443 --token aewot6.al2s2nwr9qmbjrjf \

    --discovery-token-ca-cert-hash sha256:dd424ffb139d14f90a1719b455e88d030b5c48071a4a17841b6f29c646a76148

 //本行代码需记录,用于node节点加入集群。

初始化操作主要经历了下面15个步骤,每个阶段均输出均使用[步骤名称]作为开头:

① [init]:指定版本进行初始化操作。

② [preflight]:初始化前的检查和下载所需要的Docker镜像文。。

③ [kubelet-start]:生成Kubelet的配置文件/var/lib/kubelet/config.yaml,没有这个文件Kubelet无法启动,所以初始化之前的Kubelet实际上启动失败。

④ [certificates]:生成Kubernetes使用的证书,存放在/etc/kubernetes/pki目录中。

⑤ [kubeconfig]:生成KubeConfig文件,存放在/etc/kubernetes目录中,组件之间通信需要使用对应文件。

⑥ [control-plane]:使用/etc/kubernetes/manifest目录下的YAML文件,安装Master组件。

⑦ [etcd]:使用/etc/kubernetes/manifest/etcd.yaml安装Etcd服务。

⑧ [wait-control-plane]:等待control-plan部署的Master组件启动。

⑨ [apiclient]:检查Master组件服务状态。

⑩ [uploadconfig]:更新配置。

11 [kubelet]:使用configMap配置Kubelet。

12 [patchnode]:更新CNI信息到Node上,通过注释的方式记录。

13 [mark-control-plane]:为当前节点打标签,打了角色Master,和不可调度标签,这样默认就不会使用Master节点来运行Pod。

14 [bootstrap-token]:生成的Token需要记录下来,后面使用kubeadm join命令往集群中添加节点时会用到。

15 [addons]:安装附加组件CoreDNS和kube-proxy。

Kubectl默认会在执行的用户home目录下面的.kube目录下寻找config文件,配置kubectl工具。

 

检查集群状态。

 

(4)配置Kubernetes网络

登录Master节点,将提供的kube-flannel.yaml文件上传至Master节点root目录,使用kubectl apply命令安装网络。

(5)Node节点加入集群

登录Node节点,使用kubeadm join命令将Node节点加入集群。

 

登录Master节点,检查各节点状态。

 

(6)安装Dashboard

将提供的kubernetes-dashboard.yaml和dashboard-adminuser.yaml文件上传至Master节点root目录,使用kubectl apply命令安装Dashboard。

[root@master ~]# kubectl apply -f kubernetes-dashboard.yaml

[root@master ~]# kubectl create -f dashboard-adminuser.yaml

 

检查所有Pod状态

[root@master ~]#  kubectl get pods --all-namespaces  -o wide

通过命令检查到kubernetes-dashboard被调度到Node节点运行,通过浏览器中输入Node节点地址(Master也可以访问)https://10.24.2.9:30000,即可访问Kubernetes Dashboard

 

单击“高级”→“接受风险并继续”按钮,即可进入Kubernetes Dasboard认证界面

 

图7-7-2 Kubernetes Dashboard认证界面

登录Kubernetes Dasboard需要输入令牌,通过以下命令获取访问Dashboard的认证令牌,认证后如图7-7-3所示。

[root@master ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-admin-token | awk '{print $1}')

 

(7)配置Kuboard

Kuboard是一款免费的Kubernetes图形化管理工具,其力图帮助用户快速在Kubernetes上落地微服务。登录Master节点,使用kuboard.yaml文件部署Kuboard。

 

在浏览器输入地址http://192.168.50.21:31000,即可进入Kuboard的认证界面,在Token文本框中输入令牌后可进入Kuboard控制台

 

 

 

在Kuboard控制台中可以查看到集群概览,至此Kubernetes容器云平台就部署完成了。

posted @ 2021-07-08 09:07  哆啦丢了梦  阅读(395)  评论(0编辑  收藏  举报