摘要:
前面几个篇幅,已经介绍master与node节点集群组件部署,由于K8S本身不支持网络,当 node 全部启动后,由于网络组件(CNI)未安装会显示为 NotReady 状态,需要借助第三方网络才能进行创建Pod,下面将部署 Calico 网络为K8S提供网络支持,完成跨节点网络通讯。
官方文档 https://docs.projectcalico.org/v3.6/introduction
1)下载Calico yaml
[root@k8s-master01 ~]# mkdir /opt/k8s/calico [root@k8s-master01 ~]# cd /opt/k8s/calico/ [root@k8s-master01 calico]# wget http://docs.projectcalico.org/v3.6/getting-started/kubernetes/installation/hosted/calico.yaml
2)修改配置
默认calico配置清单文件与我们部署的集群并不兼容,所以我们需要修改以下字段信息
[root@k8s-master01 calico]# vim calico.yaml ## etcd 证书 base64 地址 (执行里面的命令生成的证书 base64 码,填入里面) apiVersion: v1 kind: Secret type: Opaque metadata: name: calico-etcd-secrets namespace: kube-system data: etcd-key: (cat /etc/kubernetes/ssl/etcd-key.pem | base64 | tr -d ' ') etcd-cert: (cat /etc/kubernetes/ssl/etcd.pem | base64 | tr -d ' ') etcd-ca: (cat /etc/kubernetes/ssl/ca.pem | base64 | tr -d ' ') ## 如上()中只是生成base64码的命令实际操作时需要去掉(),只需要填写生成的编码并用双引号引起来即可 ## ConfigMap ### 修改etcd地址 etcd_endpoints: "https://10.10.0.18:2379,https://10.10.0.19:2379,https://10.10.0.20:2379" ### 修改etcd证书位置 etcd_ca: "/calico-secrets/etcd-ca" etcd_cert: "/calico-secrets/etcd-cert" etcd_key: "/calico-secrets/etcd-key" ## 修改pod 分配的IP段(不能与node、service等地址同一网段) - name: CALICO_IPV4POOL_CIDR value: "10.254.64.0/18"
3)应用
[root@k8s-master01 calico]# kubectl apply -f calico.yaml
4)查看
[root@k8s-master01 ~]# kubectl get po -n kube-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES calico-kube-controllers-75569d87d7-lxmgq 1/1 Running 0 70s 10.10.0.22 k8s-node02 <none> <none> calico-node-lhmt8 1/1 Running 0 70s 10.10.0.22 k8s-node02 <none> <none> calico-node-nkmh2 1/1 Running 0 70s 10.10.0.21 k8s-node01 <none> <none>
5)验证集群状态
## 查看node是否为就绪状态 [root@k8s-master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-node01 Ready <none> 19h v1.14.1 k8s-node02 Ready <none> 18h v1.14.1