上文我们讲解了 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:日志级别。
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 daemon-reload
$ systemctl enable kubelet
$ systemctl start kubelet
$ systemctl enable kube-proxy
$ systemctl start kube-proxy
kubelet 默认采用向 Master 自动注册本 Node 的机制,在 Master 上查看各 Node 的状态,状态为 Ready 表示 Node 已经成功注册并且状态可用,命令如下:
——continue
【Kubernetes实战|Kubernetes实战(二十二)-kubernetes二进制文件方式部署集群(下)】
推荐阅读
- linux|2022年云原生趋势
- 个人日记|K8s中Pod生命周期和重启策略
- k8s|Scheduling Framework 与 Extender对比及详细介绍
- k8s|k8s(六)(配置管理与集群安全机制)
- 云原生应用之旅—Kubernetes成长记 | 第十站(获取云原生旅行秘籍)
- Kubernetes实战|Kubernetes实战(十九)-CA证书制作
- Kubernetes实战|Kubernetes实战(二十)- Etcd 集群部署
- 如何彻底删除EKS中一直卡在Terminating的Namespace
- 【K8S 系列】k8s 学习二,kubernetes 核心概念及初步了解安装部署方式