上文我们讲解了 Master 节点上的 etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker 服务的部署,本文我们来介绍 Node 上的 kubelet、kube-proxy 服务部署。
在工作 Node 上需要预先安装好 Docker 并且正常启动,二进制 Kubernetes 集群的 docker 是 v19.03.12 版本,相关文章已经为各位客官准备好了(版本注意选择 v19.03.12),传送门如下:
Docker 环境搭建和配置
到此我们就在 Master 节点上部署了 docker 服务。
在客户端解压 kubernetes-node-linux-amd64.tar.gz 文件,将 kubectl、kubelet、kube-proxy 可执行文件复制到 /usr/bin 目录下,然后在 /usr/lib/systemd/system 目录下为各个服务创建 systemd 服务配置文件,然后配置各个服务的启动参数。
1、kubelet服务
kubelet服务依赖于Docker服务,设置 systemd服务配置文件 /usr/lib/systemd/system/kubelet.service,内容如下:
[Unit]
Description=kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/Kubernetes
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet $KUBELET_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
其中,WorkingDirectory 表示 kubelet 保存数据的目录,需要再启动 kubelet 服务之前创建。
配置文件 /etc/kubernetes/kubelet 的内容包括了 kubelet 的全部启动参数,主要的配置参数在变量 KUBELET_ARGS 中指定,/etc/kubernetes/kubelet 内容如下:
KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig \
--hostname-override=master \
--logtostderr=false \
--log-dir=/var/log/kubernetes \
--v=0"
对启动参数说明如下:
--kubeconfig:设置与 API Server 连接的相关配置,可以与 kube-controller-manager 使用的 kubeconfig 文件相同。
--hostname-override:设置本Node的名称
--logtostderr:设置为 false 表示将日志写入文件,不写入 stderr。
--log-dir:日志目录。
--v:日志级别。
2、kube-proxy服务
kube-proxy 服务依赖于 network 服务,设置 systemd 服务配置文件 /usr/lib/systemd/system/kube-proxy.service,内容如下:
[Unit]
Description=kubernetes Kube-proxy Server
Documentation=https://github.com/GoogleCloudPlatform/Kubernetes
After=network.service
Requires=network.service
[Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS
Restart=on-failure
LinitNOFILE=65535
[Install]
WantedBy=multi-user.target
配置文件 /etc/kubernetes/proxy 的内容包括了 kube-proxy 的全部启动参数,主要的配置参数在变量 KUBE_PROXY_ARGS 中指定,/etc/kubernetes/proxy 内容如下:
KUBE_PROXY_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig \
--logtostderr=false \
--log-dir=/var/log/kubernetes \
--v=2"
对启动参数说明如下:
--kubeconfig:设置与 API Server 连接的相关配置,可以与 kube-controller-manager 使用的 kubeconfig 文件相同。
--logtostderr:设置为 false 表示将日志写入文件,不写入 stderr。
--log-dir:日志目录。
--v:日志级别。
配置完成后,通过 systemctl 启动 kubelet 和 kube-proxy 服务:
$ systemctl daemon-reload
$ systemctl enable kubelet
$ systemctl start kubelet
$ systemctl enable kube-proxy
$ systemctl start kube-proxy
kubelet 默认采用向 Master 自动注册本 Node 的机制,在 Master 上查看各 Node 的状态,状态为 Ready 表示 Node 已经成功注册并且状态可用,命令如下: