一 部署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節點操作,

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節點操作,

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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/155252.html
標籤:Linux
