【8】搭建k8s集群系列(二进制部署)之安装node节点组件(kubelet)

一、下载k8s二进制文件

下载地址:

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG

-1.20.md

注:打开链接你会发现里面有很多包,下载一个 server 包就够了,包含了 Master 和 Worker Node 二进制文件。

二、解压二进制包

bash 复制代码
# 创建工作目录
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
# 解压
tar zxvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes/server/bin
cp kubelet kube-proxy /opt/kubernetes/bin # 本地拷贝
cp kubectl /usr/bin/ #拷贝kubectl到系统的bin目录,方便直接使用kubectl命令

三、创建配置文件

bash 复制代码
cat > /opt/kubernetes/cfg/kubelet.conf << EOF
KUBELET_OPTS="--logtostderr=false \\
--v=2 \\
--log-dir=/opt/kubernetes/logs \\
--hostname-override=k8s-node1 \\
--network-plugin=cni \\
--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \\
--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \\
--config=/opt/kubernetes/cfg/kubelet-config.yml \\
--cert-dir=/opt/kubernetes/ssl \\
--pod-infra-container-image=lizhenliang/pause-amd64:3.0"
EOF

• --hostname-override:显示名称,集群中唯一

• --network-plugin:启用 CNI

• --kubeconfig:空路径,会自动生成,后面用于连接 apiserver

• --bootstrap-kubeconfig:首次启动向 apiserver 申请证书

• --config:配置参数文件

• --cert-dir:kubelet 证书生成目录

• --pod-infra-container-image:管理 Pod 网络容器的镜像

3.1 配置参数文件

yaml 复制代码
cat > /opt/kubernetes/cfg/kubelet-config.yml << EOF
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
address: 0.0.0.0
port: 10250
readOnlyPort: 10255
cgroupDriver: cgroupfs
clusterDNS:
- 10.0.0.2
clusterDomain: cluster.local
failSwapOn: false
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 2m0s
    enabled: true
  x509:
    clientCAFile: /opt/kubernetes/ssl/ca.pem
authorization:
  mode: Webhook
  webhook:
   cacheAuthorizedTTL: 5m0s
   cacheUnauthorizedTTL: 30s
evictionHard:
  imagefs.available: 15%
  memory.available: 100Mi
  nodefs.available: 10%
  nodefs.inodesFree: 5%
maxOpenFiles: 1000000
maxPods: 110
EOF

3.2 生成 kubelet 初次加入集群引导 kubeconfig 文件

bash 复制代码
KUBE_CONFIG="/opt/kubernetes/cfg/bootstrap.kubeconfig"
KUBE_APISERVER="https://192.168.1.20:6443" # apiserver IP:PORT
TOKEN="c47ffb939f5ca36231d9e3121a252940" # 与 token.csv 里保持一致
# 生成 kubelet bootstrap kubeconfig 配置文件
kubectl config set-cluster kubernetes \
--certificate-authority=/opt/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=${KUBE_CONFIG}
kubectl config set-credentials "kubelet-bootstrap" \
--token=${TOKEN} \
--kubeconfig=${KUBE_CONFIG}
kubectl config set-context default \
--cluster=kubernetes \
--user="kubelet-bootstrap" \
--kubeconfig=${KUBE_CONFIG}
kubectl config use-context default --kubeconfig=${KUBE_CONFIG}

四、systemd 管理 kubelet

bash 复制代码
cat > /usr/lib/systemd/system/kubelet.service << EOF
[Unit]
Description=Kubernetes Kubelet
After=docker.service
[Service]
EnvironmentFile=/opt/kubernetes/cfg/kubelet.conf
ExecStart=/opt/kubernetes/bin/kubelet \$KUBELET_OPTS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF

五、启动并设置开机启动

bash 复制代码
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet

六、批准 kubelet 证书申请并加入集群

查看 kubelet 证书请求

bash 复制代码
kubectl get csr

NAME AGE SIGNERNAME REQUESTOR CONDITION

node-csr-uCEGPOIiDdlLODKts8J658HrFq9CZ--K6M4G7bjhk8A 6m3s kubernetes.io/kube-

apiserver-client-kubelet kubelet-bootstrap Pending

批准申请

bash 复制代码
# 申请ID从前`kubectl get csr`结果中获取
kubectl certificate approve node-csr-uCEGPOIiDdlLODKts8J658HrFq9CZ--K6M4G7bjhk8A

查看节点

bash 复制代码
#去master节点执行以下查看命令
kubectl get node

NAME STATUS ROLES AGE VERSION

k8s-master1 NotReady 7s v1.18.3

注:由于网络插件还没有部署,节点会没有准备就绪 NotReady

相关推荐
钱彬 (Qian Bin)5 分钟前
项目实践14—全球证件智能识别系统(切换回SQLite数据库并基于Docker实现离线部署和日常管理)
运维·docker·容器·fastapi·证件识别
VermiliEiz1 小时前
二进制文件部署k8s方式(4)
云原生·容器·kubernetes
牛奔2 小时前
docker compose up 命令,默认配置文件自动查找规则
java·spring cloud·docker·容器·eureka
BigBigHang2 小时前
【docker】离线设备安装镜像
运维·docker·容器
学好statistics和DS2 小时前
Docker文件与本地文件,系统
运维·docker·容器
liuc03172 小时前
docker下安装SearXNG
运维·docker·容器
oMcLin2 小时前
如何在CentOS 8上配置并优化Docker与Kubernetes结合的容器集群,提升微服务部署效率?
docker·kubernetes·centos
可爱又迷人的反派角色“yang”3 小时前
k8s(一)
linux·运维·网络·云原生·容器·kubernetes
可爱又迷人的反派角色“yang”3 小时前
CICD持续集成Ruo-Yi项目
linux·运维·网络·ci/cd·docker·容器
星环处相逢4 小时前
K8s 网络插件选型:Flannel vs Calico 深度对比
网络·容器·kubernetes