日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flanneld 安装

發(fā)布時間:2024/10/8 编程问答 29 如意码农
生活随笔 收集整理的這篇文章主要介紹了 flanneld 安装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄
  • flanneld 安裝
  • 下載分發(fā)flanneld二進制文件
  • 分發(fā)二進制文件到所有集群的節(jié)點
  • 創(chuàng)建Flannel證書和私鑰
    • 創(chuàng)建證書簽名請求
    • 生成證書和私鑰
  • 向etcd寫入Pod網(wǎng)段信息
  • 創(chuàng)建flanneld的啟動文件
    • 啟動flanneld服務
  • 查看 etcd 中flanneld信息
    • 檢查分配給flanneld的Pod網(wǎng)段信息
    • 查看已分配的Pod子網(wǎng)網(wǎng)段列表
    • 查看某Pod網(wǎng)段對應節(jié)點IP和flannel接口地址
  • 當新節(jié)點加入,也需要安裝flanneld

flanneld 安裝

Kubernetes要求集群內(nèi)各個節(jié)點(包括master)能通過Pod網(wǎng)段互聯(lián)互通,F(xiàn)lannel使用vxlan技術(shù)為各個節(jié)點創(chuàng)建一個互通的Pod網(wǎng)絡,使用的端口為8472.

第一次啟動時,從etcd獲取配置的Pod網(wǎng)絡,為本節(jié)點分配一個未使用的地址段,然后創(chuàng)建flannel.1網(wǎng)絡接口(也可能是其它名稱)flannel將分配給自己的Pod網(wǎng)段信息寫入/run/flannel/docker文件,docker后續(xù)使用這個文件中的環(huán)境變量設置Docker0網(wǎng)橋,從而從這個地址段為本節(jié)點的所有Pod容器分配IP

下載分發(fā)flanneld二進制文件

本次flanneld不使用Pod運行

cd /opt/k8s/work/
wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz
mkdir flannel
tar xf flannel-v0.11.0-linux-amd64.tar.gz -C flannel

分發(fā)二進制文件到所有集群的節(jié)點

注意: 當有新的節(jié)點需要加入,也需要安裝flanneld

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp flannel/{flanneld,mk-docker-opts.sh} root@${node_ip}:/opt/k8s/bin/
ssh root@${node_ip} "chmod +x /opt/k8s/bin/*"
done

創(chuàng)建Flannel證書和私鑰

flanneld從etcd集群存取網(wǎng)段分配信息,而etcd集群開啟了雙向x509證書認證,所以需要為flannel生成證書和私鑰

創(chuàng)建證書簽名請求

cd /opt/k8s/work
cat > flanneld-csr.json <<EOF
{
"CN": "flanneld",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "4Paradigm"
}
]
}
EOF

生成證書和私鑰

cfssl gencert -ca=/opt/k8s/work/ca.pem \
-ca-key=/opt/k8s/work/ca-key.pem \
-config=/opt/k8s/work/ca-config.json \
-profile=kubernetes flanneld-csr.json | cfssljson -bare flanneld
ls flanneld*pem

將生成的證書和私鑰分發(fā)到所有節(jié)點

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /etc/flanneld/cert"
scp flanneld*.pem root@${node_ip}:/etc/flanneld/cert
done

向etcd寫入Pod網(wǎng)段信息

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/opt/k8s/work/ca.pem \
--cert-file=/opt/k8s/work/flanneld.pem \
--key-file=/opt/k8s/work/flanneld-key.pem \
mk ${FLANNEL_ETCD_PREFIX}/config '{"Network":"'${CLUSTER_CIDR}'", "SubnetLen": 21, "Backend": {"Type": "vxlan"}}'

注意:

flanneld當前版本v0.11.0不支持etcd v3,故使用etcd v2 API寫入配置Key和網(wǎng)段數(shù)據(jù);

寫入的Pod網(wǎng)段${CLUSTER_CIDR}地址段(如/16)必須小于SubnetLen,必須與kube-controller-manager的–cluster-cidr參數(shù)一致

創(chuàng)建flanneld的啟動文件

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
cat > 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=/opt/k8s/bin/flanneld \\
-etcd-cafile=/etc/kubernetes/cert/ca.pem \\
-etcd-certfile=/etc/flanneld/cert/flanneld.pem \\
-etcd-keyfile=/etc/flanneld/cert/flanneld-key.pem \\
-etcd-endpoints=${ETCD_ENDPOINTS} \\
-etcd-prefix=${FLANNEL_ETCD_PREFIX} \\
-iface=${IFACE} \\
-ip-masq
ExecStartPost=/opt/k8s/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
EOF
  • mk-docker-opts.sh 腳本將分配給 flanneld 的 Pod 子網(wǎng)段信息寫入 /run/flannel/docker 文件,后續(xù) docker 啟動時使用這個文件中的環(huán)境變量配置 docker0 網(wǎng)橋;
  • flanneld 使用系統(tǒng)缺省路由所在的接口與其它節(jié)點通信,對于有多個網(wǎng)絡接口(如內(nèi)網(wǎng)和公網(wǎng))的節(jié)點,可以用 -iface 參數(shù)指定通信接口;

    flanneld 運行時需要 root 權(quán)限;
  • -ip-masq: flanneld 為訪問 Pod 網(wǎng)絡外的流量設置 SNAT 規(guī)則,同時將傳遞給 Docker 的變量 –ip-masq(/run/flannel/docker 文件中)設置為 false,這樣 Docker 將不再創(chuàng)建 SNAT 規(guī)則; Docker 的 –ip-masq 為 true 時,創(chuàng)建的 SNAT 規(guī)則比較“暴力”:將所有本節(jié)點 Pod 發(fā)起的、訪問非 docker0 接口的請求做 SNAT,這樣訪問其他節(jié)點 Pod 的請求來源 IP 會被設置為 flannel.1 接口的 IP,導致目的 Pod 看不到真實的來源 Pod IP。 flanneld 創(chuàng)建的 SNAT 規(guī)則比較溫和,只對訪問非 Pod 網(wǎng)段的請求做 SNAT。

分發(fā)啟動文件到所有節(jié)點

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp flanneld.service root@${node_ip}:/etc/systemd/system/
done

啟動flanneld服務

source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl daemon-reload && systemctl enable flanneld && systemctl restart flanneld"
done

檢查啟動結(jié)果

source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl status flanneld|grep Active"
done

查看 etcd 中flanneld信息

檢查分配給flanneld的Pod網(wǎng)段信息

source /opt/k8s/bin/environment.sh
etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/etc/kubernetes/cert/ca.pem \
--cert-file=/etc/flanneld/cert/flanneld.pem \
--key-file=/etc/flanneld/cert/flanneld-key.pem \
get ${FLANNEL_ETCD_PREFIX}/config

查看已分配的Pod子網(wǎng)網(wǎng)段列表

source /opt/k8s/bin/environment.sh
etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/etc/kubernetes/cert/ca.pem \
--cert-file=/etc/flanneld/cert/flanneld.pem \
--key-file=/etc/flanneld/cert/flanneld-key.pem \
ls ${FLANNEL_ETCD_PREFIX}/subnets

查看某Pod網(wǎng)段對應節(jié)點IP和flannel接口地址

source /opt/k8s/bin/environment.sh
etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--ca-file=/etc/kubernetes/cert/ca.pem \
--cert-file=/etc/flanneld/cert/flanneld.pem \
--key-file=/etc/flanneld/cert/flanneld-key.pem \
get ${FLANNEL_ETCD_PREFIX}/subnets/172.30.80.0-21 #后面節(jié)點IP需要根據(jù)我們查出來的地址進行修改

查看節(jié)點flannel網(wǎng)絡信息

ip addr show

flannel.1網(wǎng)卡的地址為分配的pod自網(wǎng)段的第一個個IP (.0),且是/32的地址

ip addr show|grep flannel.1
  • 到其它節(jié)點 Pod 網(wǎng)段請求都被轉(zhuǎn)發(fā)到 flannel.1 網(wǎng)卡;

flanneld 根據(jù) etcd 中子網(wǎng)段的信息,如 ${FLANNEL_ETCD_PREFIX}/subnets/172.30.80.0-21,來決定進請求發(fā)送給哪個節(jié)點的互聯(lián) IP;

驗證各節(jié)點能通過 Pod 網(wǎng)段互通

在各節(jié)點上部署 flannel 后,檢查是否創(chuàng)建了 flannel 接口(名稱可能為 flannel0、flannel.0、flannel.1 等):

source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh ${node_ip} "/usr/sbin/ip addr show flannel.1|grep -w inet"
done

當新節(jié)點加入,也需要安裝flanneld

總結(jié)

以上是生活随笔為你收集整理的flanneld 安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。