calicoctl命令学习

Calico 是一个开源的网络和网络安全解决方案,广泛应用于容器、虚拟机和宿主机之间的网络连接。它可以在 Kubernetes、OpenShift、Docker EE、OpenStack 等 PaaS 或 IaaS 平台上使用。

主要特点

  1. 纯 Layer 3 架构:每个节点上的 Pod 都拥有唯一的 IP 地址,简化了网络管理并提供了更直观的网络拓扑。
  2. BGP 路由:Calico 使用边界网关协议(BGP)进行路由,实现高效的 IP 路由和负载均衡。
  3. ACL 支持:允许对网络流量进行精细的访问控制,通过定义 ACL 规则,可以实现对 Pod 之间和 Pod 与外部网络之间的流量进行安全控制。
  4. 网络流量加密:支持使用 IPSec 对跨节点的网络流量进行加密,提高集群的安全性。

组件

  1. Felix:Calico 的核心组件,负责接口管理、路由规则、ACL 规则和状态报告。
  2. etcd:保证数据一致性的数据库,存储集群中节点的所有路由信息。
  3. Bird:BGP 客户端,负责将 Felix 的路由信息读入内核,并通过 BGP 协议在集群中分发。
  4. calicoctl:Calico 的命令行管理工具。

优势

  • 高性能:由于采用纯 Layer 3 架构和 BGP 路由,Calico 在网络性能方面表现出色。
  • 易于管理:设计简单且易于理解,部署和管理相对轻松。
  • 强大的安全性:通过 ACL 和 IPSec 提供灵活且强大的安全控制机制。
  • 可扩展性:架构天生支持横向扩展,适用于大型集群。

calicoctl 可以使用来介绍

1
2
3
4
5
6
7
8
# 下载calicoctl二进制文件
curl -o calicoctl -O -L "https://github.com/projectcalico/calico/releases/download/v3.24.1/calicoctl-linux-amd64" 
 
# 赋予可执行权限
chmod +x calicoctl
 
# 将calicoctl复制到/usr/bin目录下
mv calicoctl /usr/bin/

安装完成后,我们可以根据如下指令查看ipPool状态

1
calicoctl get ipPool -o wide

从结果我们得知ip地址池是有的,只是被禁用了,DISABLED的状态被设置为true,将其改为false后故障估计就能恢复

1
2
3
root@master01:~# docker exec -it clab-calico-ipip-crosssubnet-control-plane  calicoctl get ipPool -o wide
NAME                  CIDR            NAT    IPIPMODE      VXLANMODE   DISABLED   DISABLEBGPEXPORT   SELECTOR
default-ipv4-ippool   10.244.0.0/16   true   CrossSubnet   Never       false      false      

当出现问题时,可能disabled的状态为true,可以通过以下命令进行修复

1
2
3
4
5
6
## 解决过程

# 在定位到问题后,我们尝试着通过下面的指令将ip地址池状态修改为启用


calicoctl patch ippool default-ipv4-ippool -p '{"spec": {"disabled": false}}'

但是这样执行后,可能没有生效,如果没有生效,可以直接通过yaml文件进行创建

calicoctl delete ippool default-ipv4-ippool 接着,我们用下面的指令进行创建

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
calicoctl create -f - <<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: default-ipv4-ippool
spec:
  cidr: 10.233.64.0/18
  ipipMode: Always
  natOutgoing: true
EOF

重启calico的组件即可。

Licensed under CC BY-NC-SA 4.0
最后更新于 Feb 25, 2025 00:42 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up