kubeadm常用

参考: https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/
在这里插入图片描述


配置kubeadm自动补全

# 配置kubeadm自动补全
source /usr/share/bash-completion/bash_completion
source <(kubeadm completion bash)
echo 'source <(kubeadm completion bash)' >>~/.bashrc
kubeadm completion bash >/etc/bash_completion.d/kubeadm

初始化一个master节点

kubeadm init

# 通过yaml初始化
kubeadm init --config kube-init.yaml

导出kubeadm默认配置文件

参考: https://www.jianshu.com/p/42e4792e142c

# 导出kubeadm默认配置文件
kubeadm config print init-defaults > kubeadm-init-config.yaml

将node节点加入集群

# 将node节点加入集群
kubeadm join ${token}

生成node配置

# 生成节点的kubeadm-config.yaml文件,在node节点操作。
sudo kubeadm config print join-defaults > kubeadm-config.yaml

# 加入集群
sudo kubeadm join --config kubeadm-config.yaml

升级k8s版本

参考: https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

在这里插入图片描述

# 查看node版本
kubectl get node

# 查看kubeadm版本
kubeadm version

# 查看kubelet版本
kubelet version

# 切换到ek8s集群
kubectl config use-context ek8s

# 指定节点为不可调度
kubectl cordon k8s-master-0

# 驱逐节点上的所有pod(腾空节点)
kubectl darin k8s-master-0 --ignore-daemonsets

# 升级kubeadm,kubelet,kubectl
## ubuntu升级kubeadm,kubelet和kubectl到1.22.2
apt update && apt-mark unhold kubeadm kubelet kubectl && \ 
apt install kubeadm=1.22.2-00 kubelet=1.22.2-00 kubectl=1.22.2-00 --allow-change-held-packages -y && \ 
apt-mark hold kubeadm kubelet kubectl

## Centos升级kubeadm,kubelet和kubectl到1.22.2
yum install -y kubeadm=1.22.2-00 kubelet=1.22.2-00 kubectl=1.22.2-00

# 验证升级计划
kubeadm upgrade plan

# 升级k8s到1.20.1版本,且不升级etcd
kubeadm upgrade apply v1.22.2 --etcd-upgrade=false

# 重启kubelet服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet

# 解除节点保护,将节点标记为可调度
kubectl uncordon k8s-master-0

# 确认node节点的版本
kubectl get node

kubeadm升级node

生产环境下没见过升级node的操作,都是一台一台踢掉,更新组件,然后ndoe重新加入集群

官方文档升级node

node 节点的升级实际上在升级完 master 节点以后不需要什么特殊操作,node 节点唯一需要升级的就是 kubelet 组件;首先在 node 节点执行 kubeadm upgrade node 命令,该命令会拉取集群内的 kubelet 配置文件,然后重新安装 kubelet 重启既可;同样升级 node 节点时不要忘记开启维护模式。针对于 CNI 组件请按需手动升级,并且确认好 CNI 组件的兼容版本。

在这里插入图片描述

#  node节点排水
kubectl darin node1

# 升级node1的kubelet
ssh node1  # ssh到node1上
apt install kubelet=1.22.7-00  # 升级node1的kubelet版本和master版本一致
systemctl restart kubelet   # 重启kubelet

# 允许node调度
kubectl uncordon k8s-node1

# 升级node
kubeadm upgrade node

维护或下线node节点

在这里插入图片描述


管理kubeadm join使用的令牌

默认token有效期24小时,当过期之后,需要重建token

参考: https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-token/
https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/

# 打印join时使用的token
kubeadm token create --print-join-command

重新初始化集群

在所有节点上执行
清空kubeadm init 或者kubeadm join对主机所作的任何更改
如果集群出错,可以重新初始化,初始化完成后再次加入node即可

注意: 数据会完全清空,生产环境慎用


官方重置方法

在所有节点上执行

# 重置master
kubeadm reset
kubeadm reset -f

# 重置过程不会清除CNI 配置,必须手动删除 /etc/cni/net.d
rm -rf /etc/cni/net.d

# 清理lvs策略
ipvsadm --clear

暴力重置方法

不推荐,实验也没有成功

参考: https://cloud.tencent.com/developer/article/1706820

#  删除/etc/kubernetes/文件夹下的所有文件
rm -rf /etc/kubernetes/*
# 删除$HOME/.kube文件夹
rm -rf ~/.kube/*
# 删除/var/lib/etcd文件夹
rm -rf /var/lib/etcd/*

# 停用端口号, 把下面的这些端口号都停用就ok
yum install -y lsof
lsof -i :6443|grep -v "PID"|awk '{print "kill -9",$2}'|sh
lsof -i :10259|grep -v "PID"|awk '{print "kill -9",$2}'|sh
lsof -i :10257|grep -v "PID"|awk '{print "kill -9",$2}'|sh
lsof -i :2379|grep -v "PID"|awk '{print "kill -9",$2}'|sh
lsof -i :2380|grep -v "PID"|awk '{print "kill -9",$2}'|sh

查看kubeadm配置信息

# 查看kubeadm配置信息
kubeadm config print

打印Kubeadm版本

# 打印Kubeadm版本
kubeadm version

预览kubeadm可用的新功能

kubeadm alpha
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值