博客 > 术业专攻> 云计算> kubernetes> Kubernetes学习笔记-手动搭建k8s-1.10.4之部署docker组件 2019年08月29日 11:24:22
docker 是容器的运行环境,管理它的生命周期。kubelet 通过 Container Runtime Interface (CRI) 与 docker 进行交互。
到 https://download.docker.com/linux/static/stable/x86_64/ 页面下载最新发布包:
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz
tar -xvf docker-18.03.1-ce.tgz
分发二进制文件到所有 worker 节点:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp docker/docker* k8s@${node_ip}:/opt/k8s/bin/
ssh k8s@${node_ip} "chmod +x /opt/k8s/bin/*"
done
EOF
cat > docker.service <<"EOF"
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
[Service]
Environment="PATH=/opt/k8s/bin:/bin:/sbin:/usr/bin:/usr/sbin"
EnvironmentFile=-/run/flannel/docker
ExecStart=/opt/k8s/bin/dockerd --log-level=error $DOCKER_NETWORK_OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
$ sudo iptables -P FORWARD ACCEPT
并且把以下命令写入 /etc/rc.local 文件中,防止节点重启iptables FORWARD chain的默认策略又还原为DROP
/sbin/iptables -P FORWARD ACCEPT
分发 systemd unit 文件到所有 worker 机器:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp docker.service root@${node_ip}:/etc/systemd/system/
done
EOF
使用国内的仓库镜像服务器以加快 pull image 的速度,同时增加下载的并发数 (需要重启 dockerd 生效):
cat > docker-daemon.json <
分发 docker 配置文件到所有 work 节点:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /etc/docker/"
scp docker-daemon.json root@${node_ip}:/etc/docker/daemon.json
done
EOF
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl stop firewalld && systemctl disable firewalld"
ssh root@${node_ip} "/usr/sbin/iptables -F && /usr/sbin/iptables -X && /usr/sbin/iptables -F -t nat && /usr/sbin/iptables -X -t nat"
ssh root@${node_ip} "/usr/sbin/iptables -P FORWARD ACCEPT"
ssh root@${node_ip} "systemctl daemon-reload && systemctl enable docker && systemctl start docker"
ssh root@${node_ip} 'for intf in /sys/devices/virtual/net/docker0/brif/*; do echo 1 > $intf/hairpin_mode; done'
ssh root@${node_ip} "sudo sysctl -p /etc/sysctl.d/kubernetes.conf"
done
EOF
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh k8s@${node_ip} "systemctl status docker|grep Active"
done
EOF
如果输出如下:
$bash magic.sh
>>> 192.168.106.3
Active: active (running) since Fri 2018-11-23 18:51:54 CST; 6h ago
>>> 192.168.106.4
Active: active (running) since Fri 2018-11-23 18:51:54 CST; 6h ago
>>> 192.168.106.5
Active: active (running) since Fri 2018-11-23 18:51:54 CST; 6h ago
则正常,如果启动失败,则检查日志:
$ journalctl -xu docker
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh k8s@${node_ip} "/usr/sbin/ip addr show flannel.1 && /usr/sbin/ip addr show docker0"
done
EOF
输出:
$bash magic.sh
>>> 192.168.106.3
3: flannel.1: mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether b2:29:a7:da:fa:d8 brd ff:ff:ff:ff:ff:ff
inet 172.30.84.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
4: docker0: mtu 1450 qdisc noqueue state UP group default
link/ether 02:42:fc:9f:7d:c9 brd ff:ff:ff:ff:ff:ff
inet 172.30.84.1/24 brd 172.30.84.255 scope global docker0
valid_lft forever preferred_lft forever
>>> 192.168.106.4
3: flannel.1: mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether f2:14:20:50:4f:af brd ff:ff:ff:ff:ff:ff
inet 172.30.8.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
4: docker0: mtu 1450 qdisc noqueue state UP group default
link/ether 02:42:a1:25:5f:c9 brd ff:ff:ff:ff:ff:ff
inet 172.30.8.1/24 brd 172.30.8.255 scope global docker0
valid_lft forever preferred_lft forever
>>> 192.168.106.5
3: flannel.1: mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether b2:fe:60:ff:53:be brd ff:ff:ff:ff:ff:ff
inet 172.30.29.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
4: docker0: mtu 1450 qdisc noqueue state UP group default
link/ether 02:42:a1:8a:c7:9c brd ff:ff:ff:ff:ff:ff
inet 172.30.29.1/24 brd 172.30.29.255 scope global docker0
valid_lft forever preferred_lft forever
确认各 work 节点的 docker0 网桥和 flannel.1 接口的 IP 处于同一个网段中,如上kube-node1节点的 172.30.84.0 和 172.30.84.1。
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: