1 背景

默认情况下,calico-node监听端口为179,因为容器安全的问题,修改修改为高位的端口,如12020.假定Kubernetes集群已经正确部署了calico,以daemon-set方式运行的calico-node监听端口为179。

可以在宿主机上通过calicoctl二进制文件和yaml配置文件就绪修改。

2 修改方法

[root@vm-paasyy24-057 calico-typha-v3.18.1]# pwd
/apps/cluster_modules_setup/calico-typha-v3.18.1
[root@vm-paasyy24-057 calico-typha-v3.18.1]# ls
calico-bgpport.yaml  calicoctl  calico-typha-v3.18.1-prod.yaml

确保calicoctl具有执行权限

找打calico-node Pod对应的容器,可通过docker ps找到。 找到此容器在宿主机上的PID,命令如下:

[root@vm-paasyy24-057 sysadm]# docker inspect -f  36f201
24381

其中36f201是容器的ID。 进入容器的namespace

[root@vm-paasyy24-057 calico-typha-v3.18.1]# nsenter -t 24381 -n

更改配置: yaml配置文件的名称为calico-bgpport.yaml,内容如下:

apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
  name: default
spec:
  listenPort: 12020

更改配置

[root@vm-paasyy24-057 calico-typha-v3.18.1]# ./calicoctl apply -f calico-bgpport.yaml 
Successfully applied 1 'BGPConfiguration' resource(s)

检查

[root@vm-paasyy24-057 calico-typha-v3.18.1]# ss -tln|grep 12020
LISTEN     0      8            *:12020                    *:*                  
[root@vm-paasyy24-057 calico-typha-v3.18.1]# exit
logout
[root@vm-paasyy24-057 calico-typha-v3.18.1]#

发现当前主机的监听端口已经改变。 需要注意的是,虽然calico-node是以daemon-set的方式运行的,在每个主机上都有运行,但此配置的更改只需要在一个容器内执行,验证如下:

[root@vm-paasyy24-057 calico-typha-v3.18.1]# ansible -i /home/sysadm/files/kubernetes_cluster_setup/hosts node -m shell -a "ss -tln|grep :12020"
10.248.24.61 | CHANGED | rc=0 >>
LISTEN     0      8            *:12020                    *:*                  
10.248.24.57 | CHANGED | rc=0 >>
LISTEN     0      8            *:12020                    *:*                  
10.248.24.59 | CHANGED | rc=0 >>
LISTEN     0      8            *:12020                    *:*                  
10.248.24.58 | CHANGED | rc=0 >>
LISTEN     0      8            *:12020                    *:*                  
10.248.24.60 | CHANGED | rc=0 >>
LISTEN     0      8            *:12020                    *:*                  
[root@vm-paasyy24-057 calico-typha-v3.18.1]# ansible -i /home/sysadm/files/kubernetes_cluster_setup/hosts node -m shell -a "ss -tln|grep :179"
10.248.24.61 | FAILED | rc=1 >>
non-zero return code
10.248.24.57 | FAILED | rc=1 >>
non-zero return code
10.248.24.60 | FAILED | rc=1 >>
non-zero return code
10.248.24.59 | FAILED | rc=1 >>
non-zero return code
10.248.24.58 | FAILED | rc=1 >>
non-zero return code

可以看到都监听在了12020端口,179端口已经不在监听。