|NO.Z.00060|——————————|^^ 部署 ^^|——|KuberNetes&二进制部署.V13|3台Server|——|kubernetes组件|calico|
一、部署calico:calico组件说明
### --- calico官网
~~~ https://docs.projectcalico.org/maintenance/kubernetes-upgrade#upgrading-an-installation-that-uses-the-kubernetes-api-datastore

### --- calico安装手册
~~~ https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises

### --- calico安装方式有两种:
~~~ 第一种:通过etcd直连的
~~~ 第二种:通过aliserver连接etcd,就是通过apiserver中继了一个过程:
~~~ 第二种:方案一:少于50个节点
~~~ 第二种:方案二:大于50个节点;多了一个管理的容器
### --- calico安装选择方式
~~~ apiserver方式:官网建议使用apiserver连接的方式安装calico,方式比较简单;无需任何配置,直接运行即可
~~~ etcd的方式:把etcd的证书和节点的IP地址配置进去即可
~~~ 使用apiserver连接的方式连接的etcd,若是当etcd全部都挂掉,会导致每个宿主机上的容器不通;在虚拟化环境下:openstack环境。在物理节点是没有任何问题的。
~~~ etcd直连的方式,对apiserver的并发要求会少一点
~~~ # calico所在节点和kubelet并行的去升级,这样就不会出现2次节点下线,pod漂移的情况
二、部署calico:以下步骤只在master01执行
### --- 进入calico安装目录下
[root@k8s-master01 ~]# cd /root/k8s-ha-install/calico/
### --- 修改calico-etcd.yaml配置参数
[root@k8s-master01 calico]# sed -i 's#etcd_endpoints: "http://<ETCD_IP>:<ETCD_PORT>"#etcd_endpoints: "https://192.168.1.11:2379,https://192.168.1.14:2379,https://192.168.1.15:2379"#g' calico-etcd.yaml
RT=`cat /etc/kubernetes/pki/etcd/etcd.pem | base64 | tr -d '\n'`
ETCD_KEY=`cat /etc/kubernetes/pki/etcd/etcd-key.pem | base64 | tr -d '\n'`
sed -i "s@# etcd-key: null@etcd-key: ${ETCD_KEY}@g; s@# etcd-cert: null@etcd-cert: ${ETCD_CERT}@g; s@# etcd-ca: null@etcd-ca: ${ETCD_CA}@g" calico-etcd.yaml
sed -i 's#etcd_ca: ""#etcd_ca: "/calico-secrets/etcd-ca"#g; s#etcd_cert: ""#etcd_cert: "/calico-secrets/etcd-cert"#g; s#etcd_key: "" #etcd_key: "/calico-secrets/etcd-key" #g' calico-etcd.yaml
[root@k8s-master01 calico]# ETCD_CA=`cat /etc/kubernetes/pki/etcd/etcd-ca.pem | base64 | tr -d '\n'`
[root@k8s-master01 calico]# ETCD_CERT=`cat /etc/kubernetes/pki/etcd/etcd.pem | base64 | tr -d '\n'`
[root@k8s-master01 calico]# ETCD_KEY=`cat /etc/kubernetes/pki/etcd/etcd-key.pem | base64 | tr -d '\n'`
[root@k8s-master01 calico]# sed -i "s@# etcd-key: null@etcd-key: ${ETCD_KEY}@g; s@# etcd-cert: null@etcd-cert: ${ETCD_CERT}@g; s@# etcd-ca: null@etcd-ca: ${ETCD_CA}@g" calico-etcd.yaml
[root@k8s-master01 calico]# sed -i 's#etcd_ca: ""#etcd_ca: "/calico-secrets/etcd-ca"#g; s#etcd_cert: ""#etcd_cert: "/calico-secrets/etcd-cert"#g; s#etcd_key: "" #etcd_key: "/calico-secrets/etcd-key" #g' calico-etcd.yaml
### --- 将calico下pod的网段设置成自定义的网段
~~~ # 定义calico网段地址
~~~ 注:注意下面的这个步骤是把calico-etcd.yaml文件里面的CALICO_IPV4POOL_CIDR下的网段改成自己的Pod网段,也就是把192.168.x.x/16改成自己的集群网段,并打开注释:
~~~ 注:所以更改的时候请确保这个步骤的这个网段没有被统一替换掉,如果被替换掉了,还请改回来:
[root@k8s-master01 calico]# POD_SUBNET="172.16.0.0/12"
### --- 修改pod的网段
[root@k8s-master01 calico]# sed -i 's@# - name: CALICO_IPV4POOL_CIDR@- name: CALICO_IPV4POOL_CIDR@g; s@# value: "192.168.0.0/16"@ value: '"${POD_SUBNET}"'@g' calico-etcd.yaml
### --- 查看pod网段
[root@k8s-master01 calico]# vim calico-etcd.yaml
- name: CALICO_IPV4POOL_CIDR
value: 172.16.0.0/12 # 更改后的结果
### --- 创建calico
[root@k8s-master01 calico]# kubectl apply -f calico-etcd.yaml
~~~ 注:输出结果
secret/calico-etcd-secrets created
configmap/calico-config created
clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created
clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created
clusterrole.rbac.authorization.k8s.io/calico-node created
clusterrolebinding.rbac.authorization.k8s.io/calico-node created
daemonset.apps/calico-node created
serviceaccount/calico-node created
deployment.apps/calico-kube-controllers created
serviceaccount/calico-kube-controllers created
三、查看服务状态
### --- 查看容器状态
~~~ 查看calico状态
[root@k8s-master01 calico]# kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-5f6d4b864b-lmxz4 1/1 Running 0 2m58s
calico-node-8pcrk 1/1 Running 0 2m58s
calico-node-99xlf 1/1 Running 0 2m58s
calico-node-bngjb 1/1 Running 1 2m58s
### --- 查看node状态,可以正常获取到node数据
~~~ 状态变为Ready,正常状态
[root@k8s-master01 calico]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready <none> 82m v1.20.0
k8s-node01 Ready <none> 81m v1.20.0
k8s-node02 Ready <none> 81m v1.20.0
### --- 查看日志信息,没有报错信息了
[root@k8s-master01 calico]# tail -f /var/log/messages
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?