前言
写在前头
在 Node 上需要部署 Docker、kubelet、kube-proxy,在成功加入 Kubernetes 集群后,还需要部署 CNI 网络插件、DNS 网络插件等管理组件。
前面几节的内容分别是 部署 etcd
、部署 docker 服务
、部署 Master 的服务
,本节内容是 部署 Node 的服务
。
正文
1. 部署 kubelet 服务
- 为 kubelet 服务创建 systemd 服务配置文件
/usr/lib/systemd/system/kubelet.service
,内容如下:
[Unit] Description=Kubernetes Kubelet Server Documentattion=https://github.com/kubernetes/kubernetes After=docker.target [Service] EnvironmentFile=/etc/kubernetes/kubelet ExecStart=/usr/bin/kubelet $KUBELET_ARGS Restart=always [Install] WantedBy=multi-user.target
- 配置文件 /etc/kubernetes/kubelet 的内容为通过环境变量 KUBELET_ARGS 设置的 kubelet 的全部参数,内容如下:
KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig \ --config=/etc/kubernetes/kubelet.config \ --hostname-override=172.16.0.10 \ --network-plugin=cni \ --v=0"
- --hostname-override:设置本 Node 在集群中的名称,默认值为主机名,应将各 Node 设置为本机 IP 或域名。
- 配置文件 kubelet.config 的内容如下:
kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 address: 0.0.0.0 port: 10250 cgroupDriver: systemd clusterDNS: ["169.169.0.100"] clusterDomain: cluster.local authentication: anonymous: enabled: true
- 关闭 swap,不然会出现报错信息:running with swap on is not supported, please disable swap
swapoff -a
- 在配置文件准备完毕后,在各 Node 主机上启动 kubelet 服务并设置为开机自启动:
systemctl restart kubelet && systemctl enable kubelet
2. 部署 kube-proxy 服务
- 为 kube-proxy 服务创建 systemd 配置文件
/usr/lib/systemd/system/kube-proxy.service
,内容如下:
[Unit] Description=Kubernetes Kube-Proxy Server Documentation=https://github.com/kubernetes/kubernetes After=network.target [Service] EnvironmentFile=/etc/kubernetes/proxy ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS Restart=always [Install] WantedBy=multi-user.target
- 配置文件 /etc/kubernetes/proxy 的内容通过环境变量 KUBE_PROXY_ARGS 设置的 kube-proxy 的全部参数,内容如下:
KUBE_PROXY_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig \ --hostname-override=172.16.0.10 \ --proxy-mode=iptables \ --v=0"
- --hostname-override:设置本 Node 在集群中的名称,默认值为主机名,应将各 Node 设置为本机 IP 或域名。
- 在配置文件准备完毕后,在各 Node 主机上启动 kube-proxy 服务,并设置好开机自启动:
systemctl restart kube-proxy && systemctl enable kube-proxy
写在后头
在后头就是部署 CNI 网络插件了。其实整套流程下来,还是挺复杂的,但是跟着走一遍有好处,不管是对 kubernetes 本身,还是对 linux 都能提升新的认识。和前端常用 create-react-app
脚手架一样,过了新手阶段,我们应该尝试去摆脱这些,深究其后头的原理。