「连载」边缘计算(八)01-24:云、边、端的部署与配置(基础篇)

108 阅读4分钟

(接上篇)

 Kubernetes的生产环境部署

本节对部署Kubernetes生产环境的相关工具进行梳理,并对不同工具从安装方法、使用方法、相应原理的维度进行横向和纵向对比,具体如表2-3所示。

表2-3 搭建Kubernetes生产环境的工具

部署工具依赖原理备注
kubeadmdocker容器运行时、Kubelet将安装Kubernetes过程的环境检查、下载镜像、生成证书、配置Kubelet、准备yaml文件等步骤自动化Kubeadm所需的镜像默认以k8s.gcr.io开头,而且是硬编码的,国内无法直接下载,需要提前准备好
kopsKubectl在kubeadm的基础上,使搭建Kubernetes集群更方便主要在AWS上进行自动化部署Kubernetes集群
KRIBGolangDigital Rebar Provision专有的在裸机上搭建Kubernetes集群的工具Digital Rebar Provision还可以调用Kubespray
Kubesprayansible用ansible playbooks、inventory自动化部署Kubernetes集群 

从表2-3可知,kops、KRIB有明显局限性,因为kops主要在AWS上进行自动化部署Kubernetes集群;KRIB主要在裸机上进行自动化部署Kubernetes集群。kubeadm和Kubespray可以在多种平台上搭建Kubernetes的生产环境,kubespray从v2.3开始支持kubeadm,也就意味着kubespray最终还是通过kubeadm进行自动化部署Kubernetes集群。

基于上述原因,本节将只对kubeadm进行自动化部署Kubernetes集群的步骤进行说明。

本节将对使用kubeadm的注意事项以及安装、使用kubeadm进行梳理和分析。kubeadm支持的平台和资源要求如表2-4所示。

表2-4 kubeadm支持的平台和资源要求

kubeadm支持的平台Ubuntu 16.04+、Debian 9+CentOS 7、Red Hat Enterprise Linux (RHEL) 7、Fedora 25+、HyprIoTOS v1.0.1+、Container Linux (tested with 1800.6.0)
资源要求至少2CPUs、2GB内存
注意事项集群中主机之间的网络必须是相互可达的,在集群中每台主机的hostname、MAC address和product_uuid必须是唯一的,iptables后端不用nftable,在集群中每台主机上Kubernetes需要的一些端口必须是打开的,而且swap要关闭

接下来介绍对kubeadm的注意事项注意说明。

1)确保集群中所有主机之间网络可达。

在集群中不同主机间通过ping命令进行检测,命令如下:

# ping {被检测主机ip}

2)确保集群中所有主机的hostname、MAC address和product_uuid唯一。

查看主机hostname命令:#hostname

查看MAC address命令:#ip link 或者 #ifconfig -a

查看product_uuid命令:#/sys/class/dmi/id/product_uuid

3)iptables后端不用nftable,命令如下:

# update-alternatives --set iptables /usr/sbin/iptables-legacy

4)Kubernetes集群中主机需要打开的端口,如表2-5所示。

表2-5 Kubernetes集群中主机需要打开的端口

节点协议流量方向端口用途使用组件
控制节点TCP进入集群6443Kubernetes-api-server   集群中所有组件都会使用这个端口
2379、2380etcd server client APIkube-api、etcd
10250Kubelet APIKubelet、控制平面
10251kube-schedulerkube-scheduler
10252kube-controller-managerkube-controller-manager
计算节点TCP进入集群10250Kubelet APIKubelet、控制平面
30000-32767NodePort Services集群中所有组件都会使用这个端口

由表2-5可知,上述需要打开的端口都是Kubernetes默认需要打开的端口。我们也可以根据需要对一些端口进行单独指定,比如Kubernetes-api-server默认打开的端口是6443,也可以指定打开其他与现有端口不冲突的端口。

5)在Kubernetes集群中所有节点上关闭swap,命令如下:

#swapoff -a 「未完待续……」 点击下方标题可阅读技术文章

「连载」边缘计算(一)01-16:边缘计算系统(基础篇)

juejin.cn/post/732453…

「连载」边缘计算(二)01-16:边缘计算系统(基础篇)

juejin.cn/post/732452…

「连载」边缘计算(三)01-17:边缘计算系统(基础篇)

juejin.cn/post/732488…

「连载」边缘计算(四)01-18:边缘计算系统(基础篇)

juejin.cn/post/732525…

「连载」边缘计算(五)01-19:云、边、端的部署与配置(基础篇)

juejin.cn/post/732542…

「连载」边缘计算(六)01-22:云、边、端的部署与配置(基础篇)

juejin.cn/post/732657…

「连载」边缘计算(七)01-23:云、边、端的部署与配置(基础篇)

juejin.cn/post/732686…