Kubernetes的node节点包含以下组件:
※Calico:需要在service配置文件中增加TLS配置
※Doecker:统一的资源操作入口
※Kubelet:统一的资源操作入口
※Kube-proxy:统一的资源操作入口
1. Docker安装(略)
这里,Docker还是以二进制文件方式安装,具体安装方式可参考之前的文章《(6)二进制文件方式部署Kubernetes高可用集群----------安装Docker Engine》内容即可。
2. 配置kubelet
相对于kubernetes1.6集群必须进行的配置有: 对于kuberentes1.14集群,必须关闭swap,否则kubelet启动将失败。 修改/etc/fstab将,swap系统注释掉。
这里以master01作为集群的复用节点,进行node节点部署:
kubelet 启动时向 kube-apiserver 发送 TLS bootstrapping 请求,需要先将 bootstrap token 文件中的 kubelet-bootstrap 用户赋予 system:node-bootstrapper cluster 角色(role), 然后 kubelet 才能有权限创建认证请求(certificate signing requests):
2.1 在对应的master节点上给node节点kubelet授权
#在master节点上进行授权操作,该操作相当于给予node节点的签名请求权限。 kubectl create clusterrolebinding kubelet-bootstrap \ --clusterrole=system:node-bootstrapper \ --user=kubelet-bootstrap |
2.2 复用master节点上的证书和kubeconfig文件
master节点上的证书:
kubeconfig文件:
bootstrap.kubeconfig、kube-proxy.kubeconfig |
2.3 创建kubelet参数配置文件
路径:/opt/kubernetes/config
KUBELET_ARGS="--logtostderr=true \ --v=2 \ --address=192.168.0.143 \ --hostname-override=192.168.0.143 \ --kubeconfig=/opt/kubernetes/config/kubelet.kubeconfig \ --experimental-bootstrap-kubeconfig=/opt/kubernetes/config/bootstrap.kubeconfig \ --cert-dir=/opt/kubernetes/ssl \ --allow-privileged=true \ --cluster-dns=10.10.10.2 \ --cluster-domain=cluster.local \ --fail-swap-on=false \ --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"
|
2.4 创建kubelet服务启动文件
路径:/usr/lib/systemd/system
[Unit] Description=Kubernetes Kubelet After=docker.service Requires=docker.service
[Service] WorkingDirectory=/var/lib/kubelet EnvironmentFile=-/opt/kubernetes/config/kubelet ExecStart=/opt/kubernetes/bin/kubelet $KUBELET_ARGS Restart=on-failure
[Install] WantedBy=multi-user.target |
2.5 启动kubelet
#systemctl daemon-reload #systemctl start kubelet #systemctl enable kubelet #systemctl status kubelet |
2.6 通过kubelet的TLS证书请求
kubelet 首次启动时向 kube-apiserver 发送证书签名请求,必须通过后 kubernetes系统才会将该 Node 加入到集群。
查看未授权的CSR请求:
#kubectl get csr
如果看不到node节点的证书签名请求,也有一种可能就是我们的master节点没有给nodes节点上的角色授予准入集群权限。这时可执行:
kubectl create clusterrolebinding kubelet-bootstrap \
--clusterrole=system:node-bootstrapper \
--user=kubelet-bootstrap
- --user=kubelet-bootstrap 是在 /etc/kubernetes/token.csv 文件中指定的用户名,同时也写入了 /etc/kubernetes/bootstrap.kubeconfig 文件;
3. 配置kube-proxy
3.1 Kube-proxy参数配置文件
KUBE_PROXY_OPTS="--logtostderr=true \ --v=4 \ --hostname-override=192.168.0.143 \ --cluster-cidr=10.10.10.0/24 \ --proxy-mode=ipvs \ --masquerade-all=true \ --ipvs-scheduler=wrr \ --kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig" --------------------------------------------------------------------------------------------------------------------------------- 字段参数说明:
|
3.2 Kubectl-proxy.service服务启动文件
[Unit] Description=Kubernetes Proxy After=network.target Requires=network.service
[Service] EnvironmentFile=-/opt/kubernetes/config/kube-proxy ExecStart=/opt/kubernetes/bin/kube-proxy $KUBE_PROXY_ARGS Restart=on-failure
[Install] WantedBy=multi-user.target |
3.3 启动kube-proxy
#systemctl daemon-reload
#systemc start kube-proxy
#systemc enable kube-proxy
# systemctl status kube-proxy
愿你就像早晨八九点钟的太阳,活力十足,永远年轻。
注意:本文归作者所有,未经作者允许,不得转载