修改k8s的数据目录

修改kubelet工作目录

1、创建kubelet的数据目录

mkdir -p /data/k8s/kubelet

2、根据 /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 加载 /etc/sysconfig/kubelet 文件

vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--root-dir=/data/k8s/kubelet"

#命令
sed -i 's#KUBELET_EXTRA_ARGS=#KUBELET_EXTRA_ARGS="--root-dir=/data/k8s/kubelet"#g' /etc/sysconfig/kubelet
cat  /etc/sysconfig/kubelet

3、将 /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 文件中

所有 /var/lib/kubelet 改为 /data/k8s/kubelet

Environment="KUBELET_CONFIG_ARGS=--config=/data/k8s/kubelet/config.yaml"
EnvironmentFile=-/data/k8s/kubelet/kubeadm-flags.env

# 命令
sed -i 's#/var/lib/kubelet#/data/k8s/kubelet#g' /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
cat  /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf|grep /data/k8s/kubelet

4、修改 /etc/kubernetes/kubelet.conf 的证书路径

client-certificate: /data/k8s/kubelet/pki/kubelet-client-current.pem
client-key: /data/k8s/kubelet/pki/kubelet-client-current.pem

#sed -i 's#/var/lib/kubelet#/data/k8s/kubelet#g' /etc/kubernetes/kubelet.conf
#cat /etc/kubernetes/kubelet.conf|grep  /data/k8s/kubelet

5、拷贝 /var/lib/kubelet 的数据到新的kubelet数据目录 /data/k8s/kubelet

cp -r /var/lib/kubelet/* /data/k8s/kubelet/

6、不能删除 /var/lib/kubelet

7、重启kubelet

systemctl daemon-reload;
systemctl restart kubelet;

8、如果发现没有修改重启机器,或者查看拷贝文件是否正确

reboot
ls /data/k8s/kubelet/
config.yaml  cpu_manager_state  device-plugins  kubeadm-flags.env  kubelet  pki  plugins  plugins_registry  pod-resources  pods

查看目录

#修改前查看
df -h|grep pods
tmpfs                    912M   12K  912M   1% /var/lib/kubelet/pods/c9665f4d-d5a6-4b22-be88-85259eefb32d/volumes/kubernetes.io~secret/kube-proxy-token-q7hqk

#修改后查看
df -h|grep pods
tmpfs                    912M   12K  912M   1% /data/k8s/kubelet/pods/608a960f-1523-4975-a90d-4235d763d5fd/volumes/kubernetes.io~secret/kube-proxy-token-q7hqk

修改etcd工作目录

创建目录

#创建etcd的数据目录
mkdir -p /data/k8s/etcd

初始化前

初始化前,只需要在初始化配置文件中添加

......
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    # 将目录改成新的目录
    dataDir: /data/k8s/etcd
imageRepository: registry.aliyuncs.com/google_containers
....

已经部署后

已经部署后的etcd,修改配置文件后,etcd会自动重启,并且导致对应机器的kubectl不可用

所以请一台一台修改,etcd leader节点放到最后操作,并且确保其他机器的kubectl可用

#修改/etc/kubernetes/manifests/etcd.yaml的etcd-data的hostpath
$vim /etc/kubernetes/manifests/etcd.yaml
volumes:
  - hostPath:
      path: /etc/kubernetes/pki/etcd
      type: DirectoryOrCreate
    name: etcd-certs
  - hostPath:
      path: /data/k8s/etcd
      type: DirectoryOrCreate
    name: etcd-data

修改完成后,etcd会自动重启,使用其他master查看etcd状态。

这里etcd起不来是正常的,需要执行一下几步:

  1. 删除etcd的pod,删除后pod会从列表中消失,这是正常现象
  2. 需把etcd的要把/var/lib/etcd/* 拷贝到更改后的目录
  3. 重启物理机的kubelet
  4. 查看状态

以上4步做完之后,etcd应该已经起来了。

注意,这里一定要先修改配置文件,在拷贝etcd数据

使用 kubectl exec 到一个etcd节点中, 查看etcd状态,一定要等节点状态全部健康后,在继续操作其他节点。

删除etcd的pod,删除后pod会从列表中消失,这是正常现象

kubectl get pods -A
No resources found

#把etcd的数据/var/lib/etcd/* 拷贝到更改后的目录
\cp -r /var/lib/etcd/* /data/k8s/etcd

#重启kubelet(最好重启主机)
systemctl daemon-reload;
systemctl restart kubelet;
#reboot

查看etc状态

kubectl get pods -A|grep etcd
kube-system   etcd-k8s-master                      1/1     Running   1          3m37s
posted @   厚礼蝎  阅读(347)  评论(0编辑  收藏  举报
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示