比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。
目录
[1. 查看docker的存储路径和版本](#1. 查看docker的存储路径和版本)
[2. 升级docker为19.03.15](#2. 升级docker为19.03.15)
[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. 确认版本)
[1. master获得join的命令](#1. master获得join的命令)
[2. node执行kubeadm join](#2. node执行kubeadm join)
前言
做了一些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镜像
-
pause:每个 Pod 的基础容器,创建共享网络空间
-
kube-proxy:节点网络代理,实现 Service 负载均衡
-
两者都是 K8s 必须镜像,离线部署必须提前下载打包
sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.10
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.10 k8s.gcr.io/kube-proxy:v1.21.10sudo docker pull registry.aliyuncs.com/google_containers/pause:3.4.1
sudo docker tag registry.aliyuncs.com/google_containers/pause:3.4.1 k8s.gcr.io/pause:3.4.1sudo systemctl restart kubelet
注意: 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提供了大量能使我们快速便捷地处理数据的函数和方法。