kubernetes要求集群内各节点能通过Pod网段互联互通,本文档介绍使用Flannel在所有节点(Master、Node)上创建互联互通的Pod网段的步骤。
导入环境变量
$ source /root/local/bin/environment.sh
创建TLS秘钥和证书
etcd集群启用了双向TLS认证(之前etcd已经有证书了,而etcd访问flannel也需要加密),所以需要为flannel指定与etcd集群通信的CA和秘钥。
创建flannel证书签名请求:
$ cat > flannel-csr.json << EOF
{
"CN": "flannel",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
hosts字段为空;
生成flannel证书和私钥:
$ cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \
-ca-key=/etc/kubernetes/ssl/ca-key.pem \
-config=/etc/kubernetes/ssl/ca-config.json \
-profile=kubernetes flannel-csr.json | cfssljson -bare flannel
$ ls flannel*
# flannel.csr flannel-csr.json flannel-key.pem flannel.pem
$ sudo mkdir -p /etc/flannel/ssl
$ sudo mv flannel*.pem /etc/flannel/ssl
$ sudo rm -rf flannel.csr flannel-csr.json
向etcd写入集群Pod网段信息
注意:本步骤只需在第一次部署Flannel网络时执行,后续在其它节点上部署Flannel时无需再写入该信息!