添加node节点到k8s集群+配置网络插件flannel

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。
目录

前言

一、docker相关内容

[1. 查看docker的存储路径和版本](#1. 查看docker的存储路径和版本)

[2. 升级docker为19.03.15](#2. 升级docker为19.03.15)

二、k8s清理+安装新版本

[1. 一键把节点恢复成裸机](#1. 一键把节点恢复成裸机)

[2. 删除 CNI 插件留下的所有网络配置](#2. 删除 CNI 插件留下的所有网络配置)

[3. 删除 kubelet 本地"Pod 资源使用量"快照](#3. 删除 kubelet 本地“Pod 资源使用量”快照)

[4. 停服+查看当前版本](#4. 停服+查看当前版本)

[5. 下载安装](#5. 下载安装)

[6. kubelet systemd 配置或者systemd配置](#6. kubelet systemd 配置或者systemd配置)

[7. 确认版本](#7. 确认版本)

三、添加node节点

[1. master获得join的命令](#1. master获得join的命令)

[2. node执行kubeadm join](#2. node执行kubeadm join)

四、安装网络插件flannel

五、拉取kube-proxy和pause镜像

总结


前言

做了一些node节点的相关配置,很多地方为了省事儿版本一致都是直接从master上打包扔过来的镜像,很好用的方法。


都完成之后安全起见 sudo reboot一下设备,保证它干干净净的,防止有网络的残余配置影响pod启用

一、docker相关内容

1. 查看docker的存储路径和版本

复制代码
sudo docker info --format '{{.DockerRootDir}}'
docker --version
cat /etc/docker/daemon.json

我之前版本太低,需要升级,也记录一下升级过程

2. 升级docker为19.03.15

复制代码
mkdir /tmp/k8s && cd /tmp/k8s

wget  https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-19.03.15.tgz 

tar xzvf docker-19.03.15.tgz


sudo systemctl stop docker

sudo systemctl stop containerd

sudo systemctl disable docker
sudo systemctl disable containerd

sudo cp docker/* /usr/bin/

sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.date.$(date +%F-%T).bak

sudo tee /etc/docker/daemon.json <<EOF
{
   "exec-opts": ["native.cgroupdriver=systemd"],
   "data-root": "/data/docker",
   "insecure-registries": ["registry.com"],
   "log-driver": "json-file",
   "log-opts": {
         "max-size": "100m",
         "max-file": "5"
   } 
}
EOF

sudo systemctl reset-failed docker
sudo systemctl daemon-reexec

sudo systemctl start containerd
sudo systemctl status containerd

sudo systemctl start docker
sudo systemctl status docker

sudo systemctl enable docker
sudo systemctl enable containerd

docker --version

二、k8s清理+安装新版本

之前这些机器上做过低版本的k8s,由于不能重装,所以只能清理

1. 一键把节点恢复成裸机

复制代码
sudo kubeadm reset -f

2. 删除 CNI 插件留下的所有网络配置

复制代码
sudo rm -rf /var/lib/cni/

3. 删除 kubelet 本地"Pod 资源使用量"快照

复制代码
sudo rm -rf /var/lib/kubelet/pod-resources/

4. 停服+查看当前版本

复制代码
sudo systemctl stop kubelet
kubelet --version

5. 下载安装

复制代码
# 创建临时目录
mkdir -p /tmp/k8s && cd /tmp/k8s

# 下载 kubeadm/kubelet/kubectl 1.21.10
curl -LO https://dl.k8s.io/v1.21.10/kubernetes-node-linux-amd64.tar.gz

# 解压并安装
sudo tar -xzvf kubernetes-node-linux-amd64.tar.gz
sudo cp kubernetes/node/bin/kubeadm /usr/local/bin/
sudo cp kubernetes/node/bin/kubelet /usr/local/bin/
sudo cp kubernetes/node/bin/kubectl /usr/local/bin/

# 设置可执行权限
sudo chmod +x /usr/local/bin/kubeadm /usr/local/bin/kubelet /usr/local/bin/kubectl
sudo mkdir -p /etc/systemd/system/kubelet.service.d

6. kubelet systemd 配置或者systemd配置

(二选一即可,感觉b更方便好用)

复制代码
(a)
cat <<EOF | sudo tee /etc/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/home/
Wants=network-online.target
After=network-online.target docker.service
Requires=docker.service

[Service]
ExecStart=/usr/local/bin/kubelet
Restart=always
RestartSec=10
StartLimitInterval=0
Environment="KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd"

[Install]
WantedBy=multi-user.target
EOF

(b)把 systemd 配置改成用新的 kubelet:

# 停掉旧 kubelet
sudo systemctl stop kubelet

# 先备份旧的
sudo mv /usr/bin/kubelet /usr/bin/kubelet.bak.1.14

# 用新版覆盖过去
sudo cp /usr/local/bin/kubelet /usr/bin/kubelet

# 重新加载 systemd
sudo systemctl daemon-reexec
sudo systemctl daemon-reload

# 启动 kubelet(启动后可能会不停地报错说拉取镜像失败,这个不用管,后面会传给它网络插件所需的镜像,或者先不启动,镜像都传完之后再启动)
sudo systemctl start kubelet
sudo systemctl enable kubelet

7. 确认版本

复制代码
kubelet --version
sudo journalctl -u kubelet -n 20 | grep "Kubernetes"

三、添加node节点

1. master获得join的命令

复制代码
kubeadm token create --print-join-command

2. node执行kubeadm join

复制代码
#执行完之后回master上执行 kubectl get nodes 就可以看到新机器了

sudo kubeadm join <master-ip>:6443 --token d8fjkz.hf2vb2afc --discovery-token-ca-cert-hash sha256:38c9ece50fea0c92f4282174bd48

四、安装网络插件flannel

复制代码
#master上直接打包扔过来
sudo docker images | grep flannel
sudo docker images | grep pause
sudo docker save -o /tmp/flannel-v0.25.5.tar      flannel/flannel:v0.25.5
sudo docker save -o /tmp/flannel-cni-v1.5.1.tar  flannel/flannel-cni-plugin:v1.5.1-flannel1
sudo docker save -o /tmp/pause_3.4.1.tar k8s.gcr.io/pause:3.4.1

#node节点
cd /tmp
scp -r ubuntu@<master-ip>:/tmp/flannel-cni-v1.5.1.tar .
scp -r ubuntu@<master-ip>:/tmp/flannel-v0.25.5.tar .
scp -r ubuntu@<master-ip>:/tmp/pause_3.4.1.tar .

sudo docker load -i flannel-v0.25.5.tar
sudo docker load -i flannel-cni-v1.5.1.tar
sudo docker load -i pause_3.4.1.tar

sudo docker images | grep flannel
sudo docker images | grep pause

五、拉取kube-proxy和pause镜像

注意: Kubernetes 集群(用了 Calico 网络)在 Ubuntu 16.04 上会因为缺少 DNS 配置文件而无法创建 Pod,所以必须安装启动 systemd-resolved 服务来生成这个文件,否则 Pod 永远卡在初始化状态(Init)。安装好之后sudo systemctl restart kubelet

复制代码
sudo apt update
sudo apt install systemd
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
systemctl status systemd-resolved
#校验关键文件是否生成(核心)
ls -lh /run/systemd/resolve/resolv.conf

sudo systemctl restart kubelet

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
努力搬砖的咸鱼1 小时前
PersistentVolume与PersistentVolumeClaim:K8s 存储绑定机制完全解析
云原生·容器·kubernetes
xingfujie2 小时前
第3章 安装 kubeadm/kubelet/kubectl
linux·云原生·容器·kubernetes·kubelet
代码讲故事2 小时前
mac电脑上docker突然无法运行,不停的出现弹框,“com.docker.vmnetd”将对你的电脑造成伤害。附国内不同芯片高速下载地址,下载直接运行。
macos·docker·容器·arm·mac·intel·下载
员宇宙3 小时前
k8s学习笔记
笔记·学习·kubernetes
运维全栈笔记3 小时前
Harbor生产级部署实战:PostgreSQL+Redis+MinIO全解耦架构详解
linux·运维·服务器·笔记·架构·kubernetes·k8s
程序员老邢3 小时前
【技术底稿 36】Docker Compose 微服务迁移 K3s:离线导入、镜像挂载、Nginx 重定向全踩坑复盘
nginx·docker·云原生·k3s·微服务迁移·技术底稿·容器运维
不做无法实现的梦~3 小时前
Docker 新手到团队协作指南
运维·docker·容器
SPC的存折3 小时前
22、K8S-Helm
云原生·容器·kubernetes
nix.gnehc4 小时前
Langfuse v3 Docker 部署
运维·人工智能·docker·容器·langfuse