一、部署环境架构以及方式
第一种部署方式
1、针对于master节点
将API Server、etcd、controller-manager、scheduler各组件进行yum install、编译安装或者展开安装的方式手动直接安装在master节点主机上,作为系统级守护进程运行。
2、针对于node节点
将kube-proxy、kubelet、docker、flannel各组件进行yum install或下载已预制好的二进制程序包手动安装在node节点主机上,作为系统级守护进程运行。
此部署方式非常的繁琐,出于安全方面的考虑,各组件之间通信都需要配置CA和证书。
注:此部署方式的缺点就是如果master宕机了,需要手动进行启动这些系统级的守护进程
第二种部署方式
由于第一种部署方式比较繁琐,此次我们采用kubeadm工具进行部署,由k8s官方所提供的专门部署集群的管理工具。
每一个节点主机上包括master节点都要手动安装并运行docker,同时也都要手动安装并运行kubelet。如果将第一个节点初始化为master节点,在执行初始化这个步骤,其实就是通过kubeadm工具将API Server、etcd、controller-manager、scheduler各组件运行为Pod,也就是跑在docker上。而其他node节点,因已经运行了kubelet、docker组件,剩下的kube-proxy组件也是要运行在Pod上。
kubelet:负责能运行Pod化容器的核心组件
docker:运行容器的引擎
但是以上master节点上的Pod都是静态Pod(static Pod),并不受k8s自身管理,只是运行为Pod形式而已,也可运行为自托管Pod(本文不作阐述)。
而flannel组件也是运行在Pod上的系统级守护进程,起到各node节点通信作用。以下是flannel简单介绍:
https://blog.csdn.net/xuguokun1986/article/details/53119330
3、kubeadm的介绍
在GitHub上kubeadm的介绍:
https://github.com/kubernetes/kubeadm
二、Kubernetes集群的部署详细步骤
(1)简述部署流程
1、master、nodes节点要先安装kubelet、kubeadm和docker
2、在master节点上运行kubeadm init进程进行初始化集群
3、将各node节点加入集群中:kubeadm join
kubeadm工作原理详解见:https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.10.md(此文档介绍的是k8s1.10版本)
(2)部署流程的详细介绍