二進制安裝K8s之部署CIN網絡
部署CIN網絡可以使用flannel或者calico,這裡介紹使用calico ecd 方式部署。
1、下載下傳calico二進制安裝包
- 建立所需目錄
mkdir -p /data/k8s/calico/{bin,config,logs}
- Calico 網絡配置NetworkManager。
NetworkManager 操作預設網絡命名空間中接口的路由表,其中 Calico veth 對被錨定以連接配接到容器。這會幹擾 Calico 代理正确路由的能力。
在 at 建立以下配置檔案/etc/NetworkManager/conf.d/calico.conf以防止 NetworkManager 幹擾接口:
cat >/etc/NetworkManager/conf.d/calico.conf <<EOF
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico
EOF
#防止 Linux conntrack 表空間不足
sysctl -w net.netfilter.nf_conntrack_max=1000000
echo "net.netfilter.nf_conntrack_max=1000000" >> /etc/sysctl.conf
-
github位址
https://github.com/projectcalico/calicoctl/releases
-
文檔位址
下載下傳 calico-etcd.yaml 配置檔案因為k8s使用的etcd 叢集
curl https://docs.projectcalico.org/manifests/calico-etcd.yaml -o calico.yaml
2、修改配置檔案
如果您使用的是 pod CIDR 192.168.0.0/16 要與k8s-叢集的一緻,在檔案kube-apiserver.conf 的 --service-cluster-ip-rang 參數
。在ConfigMap命名中calico-config,将 的值設定為etcd_endpointsetcd 伺服器的 IP 位址和端口。
提示:您可以etcd_endpoint使用逗号作為分隔符指定多個。
- 鏡像最好改成私有倉庫,避免失敗
#鏡像最好改成私有倉庫:
image: registry.com/public/docker.io/calico/cni:v3.19.1
image: registry.com/public/docker.io/calico/pod2daemon-flexvol:v3.19.1
image: registry.com/public/docker.io/calico/node:v3.19.1
image: registry.com/public/docker.io/calico/kube-controllers:v3.19.1
- 生成 連接配接 etcd 叢集證書
cat /data/etcd/ssl/server-key.pem |base64 -w 0
cat /data/etcd/ssl/server.pem |base64 -w 0
cat /data/etcd/ssl/ca.pem |base64 -w 0
寫到:
metadata:
name: calico-etcd-secrets
namespace: kube-system
data:
etcd-key: #上面生成的server-key.pem結果
etcd-cert: #上面生成的server.pem結果
etcd-ca: #上面生成的ca.pem結果
- 修改data: etcd 部分如下
data:
# Configure this with the location of your etcd cluster.
etcd_endpoints: "https://192.168.0.200:2379,https://192.168.0.201:2379,https://192.168.0.202:2379"
etcd_ca: "/calico-secrets/etcd-ca"
etcd_cert: "/calico-secrets/etcd-cert"
etcd_key: "/calico-secrets/etcd-key"
- name: CALICO_IPV4POOL_IPIP
#value: "Always"
value: "Never"
#CIN網段,要與k8s-叢集的一緻,在檔案kube-apiserver.conf 的 --service-cluster-ip-rang 參數
- name: CALICO_IPV4POOL_CIDR
value: "10.0.0.0/24"
3、配置好直接執行
kubectl apply -f calico-etcd.yaml
4、檢視
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-567b6cf877-zjqvn 1/1 Running 0 29s
calico-node-699jj 1/1 Running 0 29s
5、授權
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:calico-kube-controllers
#如果要删除calico網絡:
kubectl delete -f calico-etcd.yaml
rm -rf /var/lib/calico/*
rm -rf /etc/cni/net.d/*