YAZONG 我的开源

Kubernetes(五)kubernetes-the-hard-way方式(5.7)网络插件-Calico

  , , ,
0 评论0 浏览

这部分我们部署kubernetes的网络查件 CNI。

文档地址:

https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises

image.png

下载文件说明

上述文档中有两个配置,50以下节点和50以上节点,它们的主要区别在于这个容器:typha。

当节点数比较多的情况下,Calico 的 Felix组件可通过 Typha 直接和 Etcd 进行数据交互,不通过 kube-apiserver,降低kube-apiserver的压力。

大家根据自己的实际情况选择下载。

下载后的文件是一个all-in-one的yaml文件,我们只需要在此基础上做少许修改即可。

照着上面的地址下载小于50节点的文件。

#这里在node-1执行
[root@node-1 ~]# cd ~
[root@node-1 ~]# mkdir -p /var/lib/calico/
[root@node-1 ~]# mkdir -p /var/run/bird/

#原文提供
#[root@node-1 ~]# curl https://docs.projectcalico.org/manifests/calico.yaml -O
#这里使用v3.20版本,因为对应的K8S版本是1.20.2
[root@node-1 ~]#  curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  212k  100  212k    0     0  42272      0  0:00:05  0:00:05 --:--:-- 51387

修改IP自动发现

当kubelet的启动参数中存在--node-ip的时候,以host-network模式启动的pod的status.hostIP字段就会自动填入kubelet中指定的ip地址。
--基于上述原理,可以让calico直接指定真实的IP,而不依赖于autodetect。


[root@node-1 ~]# vim calico.yaml

修改前(3859行):

- name: IP
  value: "autodetect"

--经过实践证明,autodetect这种发现方式经常会出现问题,
比如每一条机器的网卡不太一样,一些服务器可能配置了虚拟的网卡,此时kubelet可能就将错误的网卡识别成真实的IP的地址,从而导致POD网络的不正常。
所以说直接添加真实的IP地址,status.hostIP,因为它是以host network模式启动的,肯定是能取到这个字段的。这样的话,就不会取错IP了。
  
修改后(3859行):
#不要的属性直接删除,注意空格。下述内容建议仅主机模式时使用。比如一个网卡。

- name: IP
  valueFrom:
    fieldRef:
      fieldPath: status.hostIP

修改 CIDR

修改前(3892行):

# - name: CALICO_IPV4POOL_CIDR
#   value: "192.168.0.0/16"

#不要的属性直接删除,注意空格。
#注意这里是K8S集群中的POD的虚拟IP的地址段,内网中没有冲突可以。这里跟第四章的一致。service和pod网段要分开。

修改前(3892行):
- name: CALICO_IPV4POOL_CIDR
  value: "10.200.0.0/16"

下载镜像

#提前在node-2和node-3下载镜像。因为在node-1指明的是POD的网段,而POD在worker工作节点。
[root@node-1 ~]# grep image calico.yaml
          image: docker.io/calico/cni:v3.20.6
          image: docker.io/calico/pod2daemon-flexvol:v3.20.6
          image: docker.io/calico/node:v3.20.6
          image: docker.io/calico/kube-controllers:v3.20.6
[root@node-2/3 ~]# crictl pull docker.io/calico/cni:v3.20.6
[root@node-2/3 ~]# crictl pull docker.io/calico/pod2daemon-flexvol:v3.20.6
[root@node-2/3 ~]# crictl pull docker.io/calico/node:v3.20.6
[root@node-2/3 ~]# crictl pull docker.io/calico/kube-controllers:v3.20.6
[root@node-2 ~]# crictl images
IMAGE                                                          TAG                 IMAGE ID            SIZE
docker.io/calico/cni                                           v3.20.6             13b6f63a50d67       45.3MB
docker.io/calico/kube-controllers                              v3.20.6             4dc6e7685020b       25MB
docker.io/calico/node                                          v3.20.6             daeec7e26e1f5       58.9MB
docker.io/calico/pod2daemon-flexvol                            v3.20.6             39b166f3f9360       8.61MB

calico配置文件生效

#calico配置文件生效
#这里在node-1执行
[root@node-1 ~]# kubectl apply -f calico.yaml
configmap/calico-config unchanged
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org configured
clusterrole.rbac.authorization.k8s.io/calico-kube-controllers configured
clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers unchanged
clusterrole.rbac.authorization.k8s.io/calico-node configured
clusterrolebinding.rbac.authorization.k8s.io/calico-node unchanged
daemonset.apps/calico-node configured
serviceaccount/calico-node unchanged
deployment.apps/calico-kube-controllers configured
serviceaccount/calico-kube-controllers unchanged
poddisruptionbudget.policy/calico-kube-controllers created

检查节点


#查看node节点状态
[root@node-1 ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
node-2   Ready    <none>   14h   v1.20.2
node-3   Ready    <none>   14h   v1.20.2
[root@node-1 ~]# kubectl get po -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-577f77cb5c-22q6z   1/1     Running   1          2m
calico-node-ncwxx                          1/1     Running   0          2m4s
calico-node-vjbcn                          1/1     Running   0          2m4s
nginx-proxy-node-3                         1/1     Running   2          14h
#在工作节点查看进程
[root@node-2 ~]# crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                      ATTEMPT             POD ID
5e5b00e7d767b       4dc6e7685020b       2 minutes ago       Running             calico-kube-controllers   1                   c94bc184c357d
8ab17072e7f30       daeec7e26e1f5       2 minutes ago       Running             calico-node               0                   3808aac033bb9
[root@node-3 ~]# crictl ps
CONTAINER           IMAGE               CREATED                  STATE               NAME                ATTEMPT             POD ID
af932f6e12726       f0b8a9a541369       Less than a second ago   Running             nginx-proxy         2                   3465b86b316c4
f75d74d8de3b3       daeec7e26e1f5       2 minutes ago            Running             calico-node         0                   a54b8015c6aef


标题:Kubernetes(五)kubernetes-the-hard-way方式(5.7)网络插件-Calico
作者:yazong
地址:https://blog.llyweb.com/articles/2022/11/06/1667698249527.html