kubeadm(不适合生产环境,可用kops):
#创建一个master节点
kubeadm init
#将一个node节点加入到当前集群中
kubeadm join <master节点的ip和端口>
为什么不用容器部署 Kubernetes 呢?
1.如何容器化kubelet,kubelet除了和容器运行时打交道,还要和宿主机打交道 如CNI CSI.
kubeadmin使用的方式是:
kubelet直接运行在宿主机上,然后使用容器部署其他的kubernetes组件.
所以第一步是在机器上面手动安装kubeadm,kubelet和kubectl这三个二进制文件。
kubeadm init的过程:
1.首先进行一些列检查工作 Preflight Checks
2.生成kubernetes对外提供服务所需要的各种证书和对应的目录。kubeadm的证书文件都在master节点的/etc/kubernetes/pki目录。
用户使用kubectl获取容器日志等 streaming操作时,需要通过kube-apiserver 向kubelet发起请求,这个链接也必须是安全的(kubelet-client.crt,apiserver-kubelet-client.key);
3.为其他文件生成访问kube-apiserver所需要的配置文件,路径是/etc/kubernetes/xx.conf.这些文件里面记录的是,当前master节点的服务器地址,监听端口,证书目录等信息。这样,对应的客户端,可以直接加载相应文件和kube-apiserver建立安全链接。
4.为master主键生成pod配置文件。static pod。
yaml文件会被生成在/etc/kubernetes/manifests路径下.
$ ls /etc/kubernetes/manifests/
etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml
5.kubeadm 就会为集群生成一个 bootstrap token,将 ca.crt 等 Master 节点的重要信息,通过 ConfigMap 的方式保存在 Etcd 当中,供后续部署 Node 节点使用;这个 ConfigMap 的名字是 cluster-info。
6.安装默认插件.默认 kube-proxy 和 DNS 这两个插件是必须安装的。分别用来提供整个集群的服务发现和 DNS 功能。