天天看点

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/*