• 006.Kubernetes二进制所有节点部署Docker


    一 部署Docker

    1.1 部署Docker组件

    Docker 运行和管理容器,kubelet 通过 Container Runtime Interface (CRI) 与它进行交互。

    1.2 下载Docker

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.12.tgz
      3 [root@master01 work]# tar -xvf docker-19.03.12.tgz

    提示:更多docker版本下载参考https://download.docker.com/linux/static/stable/x86_64/。

    提示:本步骤操作仅需要在master01节点操作。

    1.3 安装和部署Docker

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
      4   do
      5     echo ">>> ${all_ip}"
      6     scp docker/*  root@${all_ip}:/opt/k8s/bin/
      7     ssh root@${all_ip} "chmod +x /opt/k8s/bin/*"
      8   done

    提示:本步骤操作仅需要在master01节点操作。

    1.4 配置Docker system

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# cat > docker.service <<"EOF"
      3 [Unit]
      4 Description=Docker Application Container Engine
      5 Documentation=http://docs.docker.io
      6 
      7 [Service]
      8 WorkingDirectory=##DOCKER_DIR##
      9 Environment="PATH=/opt/k8s/bin:/bin:/sbin:/usr/bin:/usr/sbin"
     10 EnvironmentFile=-/run/flannel/docker
     11 ExecStart=/opt/k8s/bin/dockerd $DOCKER_NETWORK_OPTIONS
     12 ExecReload=/bin/kill -s HUP $MAINPID
     13 Restart=on-failure
     14 RestartSec=5
     15 LimitNOFILE=infinity
     16 LimitNPROC=infinity
     17 LimitCORE=infinity
     18 Delegate=yes
     19 KillMode=process
     20 
     21 [Install]
     22 WantedBy=multi-user.target
     23 EOF

    提示:本步骤操作仅需要在master01节点操作。

    解释:

    • EOF 前后有双引号,这样 bash 不会替换文档中的变量,如 $DOCKER_NETWORK_OPTIONS (这些环境变量是 systemd 负责替换的。);
    • Dockerd 运行时会调用其它 Docker 命令,如 docker-proxy,所以需要将 Docker 命令所在的目录加到 PATH 环境变量中;
    • flanneld 后续启动时将网络配置写入 /run/flannel/docker 文件中,dockerd 启动前读取该文件中的环境变量 DOCKER_NETWORK_OPTIONS ,然后设置 docker0 网桥网段;
    • 如果指定了多个 EnvironmentFile 选项,则必须将 /run/flannel/docker 放在最后(确保 docker0 使用 flanneld 生成的 bip 参数);
    • Docker 需要以 root 用于运行;
    • Docker 从 1.13 版本开始,可能将 iptables FORWARD chain的默认策略设置为DROP,从而导致 ping 其它 Node 上的 Pod IP 失败,遇到这种情况时,需要手动设置策略为 ACCEPT,建议以下命令写入 /etc/rc.local 文件中,防止节点重启iptables FORWARD chain的默认策略又还原为DROP
      1 [root@master01 ~]# for all_ip in ${ALL_IPS[@]}
      2   do
      3     echo ">>> ${all_ip}"
      4     ssh root@${all_ip} "echo '/sbin/iptables -P FORWARD ACCEPT' >> /etc/rc.local"
      5   done

    提示:本步骤操作仅需要在master01节点操作。

    1.5 分发Docker systemd

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# sed -i -e "s|##DOCKER_DIR##|${DOCKER_DIR}|" docker.service
      4 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
      5   do
      6     echo ">>> ${all_ip}"
      7     scp docker.service root@${all_ip}:/etc/systemd/system/
      8   done

    提示:本步骤操作仅需要在master01节点操作。

    1.6 配置Docker配置文件

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# cat > docker-daemon.json <<EOF
      4 {
      5     "registry-mirrors": ["https://dbzucv6w.mirror.aliyuncs.com"],
      6     "exec-opts": ["native.cgroupdriver=cgroupfs"],
      7     "data-root": "${DOCKER_DIR}/data",
      8     "exec-root": "${DOCKER_DIR}/exec",
      9     "log-driver": "json-file",
     10     "log-opts": {
     11       "max-size": "100m",
     12       "max-file": "5"
     13     },
     14     "storage-driver": "overlay2",
     15     "storage-opts": [
     16       "overlay2.override_kernel_check=true"
     17   ]
     18 }
     19 EOF

    提示:本步骤操作仅需要在master01节点操作。

    1.7 分发Docker配置文件

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
      4   do
      5     echo ">>> ${all_ip}"
      6     ssh root@${all_ip} "mkdir -p /etc/docker/ ${DOCKER_DIR}/{data,exec}"
      7     scp docker-daemon.json root@${all_ip}:/etc/docker/daemon.json
      8   done

    提示:本步骤操作仅需要在master01节点操作。

    二 启动并验证

    2.1 启动Docker

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
      4   do
      5     echo ">>> ${all_ip}"
      6     ssh root@${all_ip} "systemctl daemon-reload && systemctl enable docker && systemctl restart docker"
      7   done

    提示:本步骤操作仅需要在master01节点操作。

    2.2 检查Docker服务

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
      4   do
      5     echo ">>> ${all_ip}"
      6     ssh root@${all_ip} "systemctl status docker|grep Active"
      7   done

    提示:本步骤操作仅需要在master01节点操作。

    clipboard

    2.3 检查Docker 0网桥

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
      4   do
      5     echo ">>> ${all_ip}"
      6     ssh root@${all_ip} "/usr/sbin/ip addr show docker0"
      7   done

    提示:本步骤操作仅需要在master01节点操作。

    clipboard

    2.4 查看Docker信息

      1 [root@master01 ~]# for all_ip in ${ALL_IPS[@]}
      2   do
      3     echo ">>> ${all_ip}"
      4     ssh root@${all_ip} "ps -elfH | grep docker | grep -v grep"
      5   done
      6 [root@master01 ~]# for all_ip in ${ALL_IPS[@]}
      7   do
      8     echo ">>> ${all_ip}"
      9     ssh root@${all_ip} "docker info"
     10   done

  • 相关阅读:
    Centos7 keepalived 修改日志路径
    mysql 双主复制 centos7
    CentOs 7 安装mysql5.7.18(二进制版本)
    oracle、mysql新增字段,字段存在则不处理
    mysql+ibatis 批量插入
    oracle+ibatis 批量插入-支持序列自增
    oracle 批量插入-支持序列自增
    sftp上传
    java
    mysql
  • 原文地址:https://www.cnblogs.com/itzgr/p/11880792.html
Copyright © 2020-2023  润新知