k8s集群master节点迁移docker默认路径

在安装k8s集群时,没有更改docker的data目录,使用的是默认路径/var/lib/docker

导致的问题是,随着镜像的使用增多,/var/lib/docker的使用越来越大,而默认情况下,/var路径下磁盘空间是很小的,通常需要挂载新的数据目录/data,磁盘较大。

调整docker的数据目录。

echo "停止之前 检查docker状态"
sudo systemctl status docker.service | grep Active
echo "stop docker"
sudo systemctl stop docker.service
echo "停止之前,检查kubelet状态"
sudo systemctl status kubelet | grep Active
sudo systemctl stop kubelet
echo "都停止完后,检查状态"
sudo systemctl status docker.service | grep Active
sudo systemctl status kubelet | grep Active

最终执行的结果

 # sudo systemctl status kubelet | grep Active
   Active: inactive (dead) since Fri 2023-03-24 14:56:21 CST; 61ms ago
#  sudo systemctl status kubelet | grep Active
   Active: inactive (dead) since Fri 2023-03-24 14:56:21 CST; 28s ago

手动移动原docker目录,这样保留已经存在的镜像文件,否则,还要自己在去找净镜像

# sudo mv docker /data/
mv: 无法删除 'docker/containers/02e3da8176b78187965bc0f309975b082eaaf2c4518027de1f41b7787f0bb18d/mounts/shm': 设备或资源忙

修改/etc/docker/daemon.json文件,添加数据路径data-root

# cat /etc/docker/daemon.json
{
  "exec-opts": [
    "native.cgroupdriver=systemd"
  ],
  "insecure-registries": [
    "10.221.236.232:5000",
    "0.0.0.0/0",
    "127.0.0.1"
  ],
  "data-root": "/data/docker",
  "log-opts": {
    "max-file": "3",
    "max-size": "5m"
  },
  "registry-mirrors": [
    "https://mirrors.tuna.tsinghua.edu.cn",
    "https://registry.docker-cn.com"
  ]
}

重新启动docker,kubelet

# sudo systemctl daemon-reload 
# sudo systemctl restart docker.service
# sudo systemctl restart docker.service 
# sudo systemctl status docker.service         
● docker.service - Docker Application Container Engine
   Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-03-24 15:04:41 CST; 19s ago
     Docs: https://docs.docker.com
 Main PID: 18682 (dockerd)
    Tasks: 238
   Memory: 230.2M
   CGroup: /system.slice/docker.service
           ├─18682 /usr/bin/dockerd

# sudo systemctl status kubelet.service        
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: active (running) since Fri 2023-03-24 15:04:52 CST; 15s ago
     Docs: http://kubernetes.io/docs/
 Main PID: 18950 (kubelet)
    Tasks: 16
   Memory: 118.6M
   CGroup: /system.slice/kubelet.service
           └─18950 /usr/local/bin/kubelet --bootstrap-kubeconfig=

df -h 查看,docker的目录已经到新的目录上了

 

在另一台master主机上,查看pod情况,新Pod也都正常。

 也遇到过问题

failed to listen on 0.0.0.0:6443: listen tcp 0.0.0.0:6443: bind: address alr

 哪有那么复杂的,kill掉原来的进程,再重启动,便正常了。

$ netstat -lutpn | grep 6443
tcp6       0      0 :::6443                 :::*                    LISTEN      11395/some-service

$ kill 11395

$ service kubelet restart
<think> 首先,用户的问题是:“我想查找在k8s添加集群前卸载master节点的方法”。 用户指定了这是在k8s添加集群前卸载master节点的方法,意思是他们想在添加新的master节点集群之前,先卸载一个现有的master节点。 从用户提供的引用来看: - 引用[1] 讨论了添加master节点k8s集群。 - 引用[2] 涉及删除master节点后重新加入集群。 - 引用[3] 是关于K8S集群卸载清理的详解。 - 引用[4] 是k8s集群部署示例。 - 引用[5] 展示了生成加入集群的token命令。 用户的问题集中在“添加集群前卸载master节点”,所以我需要整合这些信息来提供卸载方法。 关键点: - 卸载master节点通常在集群维护、故障修复或重新配置时发生。 - 在添加新节点之前卸载节点,可能是在清理或准备环境。 基于引用[2],它直接提到了删除master节点: - 引用[2]说:“执行 kubectl delete node master03 把 master03 移除”,然后如何重新加入。 - 但卸载不仅仅是删除节点;它还包括清理相关资源。 引用[3]是关于集群卸载清理的详细指南,包括卸载master节点的步骤。 所以,我应该结合这些引用,提供一个结构清晰的回答。 回答结构: 1. **介绍卸载master节点的方法**:解释为什么需要卸载和基本步骤。 2. **详细步骤**: - 准备:确保集群健康。 - 删除节点:使用kubectl命令删除节点。 - 清理资源:删除相关资源如etcd成员、配置等。 - 安全移除:确保集群稳定。 3. **注意事项**:在添加新节点前卸载的特定考虑。 4. **相关命令**:提供示例命令。 5. **生成相关问题**:按照系统指令,添加相关问题。 系统级指令: - 使用$...$ 或 $$...$$ 格式:如果有数学表达式,但这里可能没有;如果有变量或命令,使用行内格式如$kubectl$。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识,如[^1]。 用户问题涉及“添加集群前”,意思是添加新节点之前卸载现有节点。所以,要强调顺序:先卸载,再添加。 从引用中提取关键信息: - 引用[2]:删除master节点用$kubectl delete node <node-name>$,然后重新加入。 - 引用[3]:卸载集群的步骤,包括移除节点和清理。 - 引用[5]:生成加入集群的token的命令,用于添加节点。 步骤大纲: 1. **准备阶段**:备份数据,检查集群状态。 2. **移除节点**:使用$kubectl drain$ 和 $kubectl delete$。 3. **清理etcd**:如果节点是etcd成员,需要删除etcd成员。 4. **清理配置文件**:删除节点上的kubeconfig和证书。 5. **集群验证**:确保集群正常。 6. **添加新节点前**:确保环境干净。 在回答中引用: - 当提到删除节点时,引用[2]:执行 kubectl delete node master03 [^2]。 - 当提到清理时,引用[3]:卸载和清理过程[^3]。 - 当提到添加节点时,引用[5]:生成加入token[^5]。 确保回答真实可靠:基于Kubernetes最佳实践和引用内容。 最终回答结构: - 开头:解释卸载master节点的方法。 - 步骤:分步解释。 - 总结:强调在添加前卸载的注意事项。 - 相关问题:生成3-4个相关问题。 生成相关问题: 1. 如何安全地添加新的master节点K8S集群? 2. Kubernetes集群中卸载节点后如何清理残留资源? 3. K8S集群维护的最佳实践有哪些? 4. 如何备份和恢复Kubernetes集群配置? </think>### Kubernetes添加集群前卸载Master节点的方法 在Kubernetes集群中添加新节点前卸载现有的Master节点,是一种常见的维护操作,通常用于故障修复、资源回收或集群重构。卸载过程需要谨慎执行,以避免破坏集群状态。以下是基于Kubernetes最佳实践的标准方法,分为准备阶段、卸载执行和清理阶段[^2][^3]。 #### **步骤1: 准备阶段 (关键预检查)** 在卸载前,确保集群健康并备份关键数据: - **检查集群状态**: 使用命令 `kubectl get nodes` 验证所有节点状态为 `Ready`,确保目标Master节点无异常。 - **备份etcd数据**: Master节点通常托管etcd(集群状态存储),备份其数据防止丢失: ```bash # 在目标Master节点执行 sudo cp -r /var/lib/etcd /backup/etcd-backup ``` - **生成节点加入令牌(可选)**: 如果卸载后计划重新添加节点,提前生成加入令牌(参考引用[5]): ```bash kubeadm token create --print-join-command ``` 输出示例:`kubeadm join 192.168.1.100:6443 --token ...`[^5] - **停止节点服务**: 在目标节点停止kubelet和容器运行时: ```bash sudo systemctl stop kubelet docker ``` #### **步骤2: 卸载执行 (从集群移除节点)** - **驱逐节点工作负载**: 从其他Master节点执行,安全迁移Pod: ```bash kubectl drain <目标节点名> --ignore-daemonsets --delete-local-data ``` 参数说明:`--ignore-daemonsets` 忽略守护进程集,`--delete-local-data` 清理本地存储[^2]。 - **正式删除节点**: 从集群控制平面移除节点记录: ```bash kubectl delete node <目标节点名> ``` 例如:`kubectl delete node master03`(引用[2]中案例)[^2]。 #### **步骤3: 清理阶段 (彻底移除残留)** 卸载后,清理目标节点集群配置: - **清理etcd成员**: 如果目标节点是etcd成员,在其他etcd节点上删除其记录: ```bash # 进入etcd容器执行 etcdctl member list # 查看成员ID etcdctl member remove <成员ID> ``` - **删除节点配置文件**: 在目标节点上移除所有K8S相关文件: ```bash sudo kubeadm reset --force sudo rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/etcd ``` 此步骤确保节点可安全重用(引用[3]清理指南)[^3]。 - **验证集群状态**: 使用 `kubectl get nodes` 确认节点已消失,且剩余节点状态正常。 #### **添加新节点前的注意事项** 在卸载完成后、添加新节点前: 1. **确保集群稳定**:检查控制平面组件(如API Server、Scheduler)是否无报错。 2. **重置网络配置**:如使用Calico等CNI,清理残留路由(引用[4]示例)[^4]。 3. **重用节点**:若同一物理机重新加入,需确保已执行 `kubeadm reset` 彻底清理[^3]。 > **重要提示**:卸载Master节点可能导致短暂服务中断。推荐在低峰期操作,并优先移除非关键Master节点(如集群中有多个Master时)。完整卸载流程可参考Kubernetes官方文档或详细指南[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值