Kubernetes安裝之四:flanneld跨主機通訊

1.跨主機通訊的基礎

1.須要docker 安裝成功(安裝過程就略了,本文以yum安裝的1.13.1爲準)node

2.須要有etcd數據庫(就是第三部完成的)docker

3.提早規劃好的flanneld網絡(因爲須要須要先申請證書,因此須要先建立證書)數據庫

2.建立etcd證書

cat > /etc/ssl/flanneld/flanneld-csr.json <<EOF
{
  "CN": "flanneld",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "ChengDu",
      "L": "ChengDu",
      "O": "k8s",
      "OU": "dessler"
    }
  ]
}
EOF
複製代碼

cfssl gencert -ca=/etc/ssl/ca.pem \
  -ca-key=/etc/ssl/ca-key.pem \
  -config=/etc/ssl/ca-config.json \
  -profile=kubernetes flanneld-csr.json | cfssljson -bare flanneld
複製代碼

ls
flanneld.csr  flanneld-csr.json  flanneld-key.pem  flanneld.pem
複製代碼

3.分發證書和二進制文件到全部的節點

包括後面增長的node節點json

4.在etcd裏面建立flanneld網絡

也就是規劃pod的網絡bash

etcdctl \
>   --endpoints=https://192.168.1.40:2379,https://192.168.1.41:2379,https://192.168.1.42:2379 \
>   --ca-file=/etc/ssl/ca.pem \
>   --cert-file=/etc/ssl/flanneld/flanneld.pem \
>   --key-file=/etc/ssl/flanneld/flanneld-key.pem \
>   set /kubernetes/network/config '{"Network":"'172.30.0.0/16'", "SubnetLen": 24, "Backend": {"Type": "vxlan"}}'
{"Network":"172.30.0.0/16", "SubnetLen": 24, "Backend": {"Type": "vxlan"}}
複製代碼

因爲物理節點的ip地址段是192.168.的 全部給docker規劃的ip地址是172.30的,你也能夠根據本身的狀況選擇不一樣的ip地址,至於爲何選擇16 是由於選擇16包含了254個網段,知足通常集羣的須要,固然也能夠選的更小或者更大網絡

5.配置flanneld服務

這個就不區分mater仍是node接點,其實master接點是能夠不須要這個的,可是爲了統一最好仍是都加上socket

cat > /usr/lib/systemd/system/flanneld.service << EOF
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service

[Service]
Type=notify
ExecStart=/usr/bin/flanneld \\
  -etcd-cafile=/etc/ssl/ca.pem \\
  -etcd-certfile=/etc/ssl/flanneld/flanneld.pem \\
  -etcd-keyfile=/etc/ssl/flanneld/flanneld-key.pem \\
  -etcd-endpoints=https://192.168.1.40:2379,https://192.168.1.41:2379,https://192.168.1.42:2379 \\
  -etcd-prefix=/kubernetes/network \\
  -iface=eth0
ExecStartPost=/usr/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure

[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
EOF複製代碼

因爲flanneld網絡須要在docker以前啓動,而且docker啓動會依賴flanneld網絡獲取的ip地址段,因此須要修改docker啓動參數以便能獲取到flanneld的網絡參數ui

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target rhel-push-plugin.socket registries.service
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/run/flannel/docker
ExecStart=/usr/bin/dockerd --log-level=error $DOCKER_NETWORK_OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave
KillMode=process

[Install]
WantedBy=multi-user.target複製代碼

這個參數對原始參數修改得有點多,一直想調試成功只增長1個參數便可實現(沒有成功)spa

6.啓動flanneld服務

systemctl daemon-reload
systemctl enable flanneld
systemctl restart flanneld
systemctl status flanneld
#重啓docker,以便docker能夠得到flanneld的網絡地址
systemctl restart docker

複製代碼

啓動成功之後,只要在有flanneld的進程的節點的建立的容器默認就是能夠跨主機通訊的調試

相關文章
相關標籤/搜索