Calico组件组网操作

前提条件

  1. 已在待部署节点安装Docker组件和Kubernetes组件(kubeadm,kubectl,kubelet)。
  2. 待部署节点可正常拉取Docker镜像。

操作步骤

  1. 初始化启动Kubernetes主节点。

    本节以10.244.0.0/16网段作为网络驱动CIDR并使用默认网关作为网络广播地址为例,若用户需指定其他网段,命令需要进行对应的修改。

    1
    2
    3
    4
    kubeadm init --pod-network-cidr=10.244.0.0/16
    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    

    初始化完成后如下图1图2所示,启动完成后查看Kubernetes集群Pods信息显示正常,Node状态处于NotReady状态,备份好输出中的kubeadm join命令备用,下一步进行网络平面部署。

    图1 Kubernetes主节点初始化成功图
    图2 Kubernetes主节点初始化状态图

  1. 编辑Calico部署yaml文件。

    下载calico.yaml和calicoctl.yaml部署文件,用户无需修改配置文件将默认部署Calico官方推荐的BGP IPIP模式,如用户需要部署VxLAN Only模式的Calico组件,请查看Open vSwitch网络平面管理

  1. 部署集群网络组件。

    使用kubectl部署集群网络组件。

    kubectl apply -f calico.yaml
    kubectl apply -f calicoctl.yaml
    alias calicoctl="kubectl exec -i -n kube-system calicoctl -- /calicoctl"

    部署完成后如下图3图4所示,coredns服务已处于Running状态,node状态处于Ready状态。

    图3 Calico组件安装图
    图4 Calico组件部署完成状态图

  1. 集群添加节点。

    在Kubernetes其他待部署节点,输入步骤二中备份的kubeadm join命令,将待部署节点添加到Kubernetes集群中。

    1
    2
    kubeadm join <master-ip:port> --token <your-token> \
    --discovery-token-ca-cert-hash sha256:<your-sha256-ca>
    

    图5所示,集群节点添加完毕后,应看到This node has joined the cluster提示,至此Calico组件组网操作步骤完成。

    图5 Calico组网添加节点图

网络验证

  1. 拷贝下列内容,编辑Nginx部署测试yaml文件,测试节点内部网络与跨节点通信能力。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-arm-deployment
    spec:
      selector:
        matchLabels:
          app: arm64v8_nginx
      replicas: 5
      template:
        metadata:
          labels:
            app: arm64v8_nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
    

  2. 在命令行使用kubectl命令部署Nginx服务,完成后如图6所示,服务正常运行,且已分配对应的IP地址。

    1
    kubectl apply -f nginx.yaml
    
    图6 Calico组网业务部署测试图

    查看节点路由信息和OVS网桥状态,如图7所示,路由信息显示正常,Calico已在内部IP Pool内部分配对应的地址给容器空间,所有服务端口以veth pair形式被Calico组件进行网络映射。节点内与节点间可正常通过路由互相通信。

    图7 Calico组网节点路由&工作负载情况