天天看點

8、二進制安裝K8s之部署CIN網絡

二進制安裝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/*

           

繼續閱讀