• kubeadm修改docker、kubelet、etcd的工作目录


    背景介绍

    本文介绍的内容,以docker-ce=19.03.13~centos 和 kubernetes=1.16.2 版本为例介绍,其他版本应该大同小异。

    我们知道,docker-ce的默认工作目录是/var/lib/docker,会存放docker镜像文件、容器日志及写到容器临时目录的文件等。

    kubelet的默认工作目录是/var/lib/kubelet,会存放volume文件(包括emptyDir volume)、plugin文件等。

    这实际存在一个风险:大量的镜像文件或容器日志等,可能把操作系统根分区容量占满,进而导致系统crash或k8s pod被频繁驱逐等异常发生。

    我们在生产环境上,往往需要更改docker和kubelet的工作目录,将其改到另外一块数据盘的文件系统上,例如下文中的“/mnt/data”目录。

    修改docker工作目录

    修改  vim /usr/lib/systemd/system/docker.service启动文件,添加  --graph=/data/docker

    ExecStart=/usr/bin/dockerd --graph=/data/docker -H fd:// --containerd=/run/containerd/containerd.sock

    重启docker

    systemctl daemon-reload
    systemctl restart docker

    修改kubelet工作目录

    根据  /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf  加载 /etc/sysconfig/kubelet 文件,只需要修改 /etc/sysconfig/kubelet 即可。

    KUBELET_EXTRA_ARGS="--root-dir=/data/k8s/kubelet"

    重启kubelet

    systemctl daemon-reload
    systemctl  restart kubelet

     PS:

    此时config.yaml文件还是在/var/lib/kubelet下,需要修改为 :  /data/k8s/kubelet

    将 /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"

     修改etcd数据目录

    使用kubeadm搭建的k8s集群,默认etcd的数据目录为 /var/lib/etcd 。
    集群运行一段时间后, 发现在系统硬盘上的etcd即占空间,又影响速度。所以将其数据目录迁移到ssd中。

    注意
    修改配置文件后,etcd会自动重启,并且导致对应机器的kubectl不可用。
    所以请一台一台修改,etcd leader 节点放到最后操作,并且确保其他机器的kubectl可用。

    vim /etc/kubernetes/manifests/etcd.yaml
    # 翻到最下方,编辑hostPath
     volumes:
      - hostPath:
          path: /etc/kubernetes/pki/etcd
          type: DirectoryOrCreate
        name: etcd-certs
      - hostPath:
          path: /data/k8s/etcd        # 将这个路径改为你要更改到的路径
          type: DirectoryOrCreate
        name: etcd-data

    注意,这里不要修改command中的–data-dir。 command中的选项是控制容器中的数据目录,我们只需要改变hostpath就可以了。

    修改完成后,etcd会自动重启,使用其他master查看etcd状态。
    这里etcd起不来是正常的,需要执行一下几步:

    1. 删除etcd的pod,删除后pod会从列表中消失,这是正常现象
    2. 需把etcd的要把/var/lib/etcd/* 拷贝到更改后的目录
    3. 重启物理机的kubelet
    4. 查看状态
      以上4步做完之后,etcd应该已经起来了。 注意,这里一定要先修改配置文件,在拷贝etcd数据

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

  • 相关阅读:
    svn服务器
    TCopyDataStruct 各个参数意义
    Com+连不上解决办法
    流的压缩与解压缩
    Config 文件的增删改查
    Assembly 操作
    redhat7 安装oracle11.2.4页面显示不全解决方法
    IEnumerator和IEnumerable详解
    [我的阿里云服务器] —— 安装LAMP
    设计模式之二抽象工厂设计模式
  • 原文地址:https://www.cnblogs.com/deny/p/14169356.html
Copyright © 2020-2023  润新知