calico客户端工具calicoctl
Calico 是一个高性能的网络和网络安全解决方案,用于 Kubernetes 和其他容器平台。calicoctl
是 Calico 提供的命令行工具,允许用户管理和配置 Calico 的网络资源。
安装 calicoctl
1. 下载 calicoctl
您可以从 Calico 官方网站下载 calicoctl
。以下是一个示例脚本,可以在 Linux 和 macOS 上下载 calicoctl
:
# 下载 calicoctl
curl -o calicoctl -O -L https://github.com/projectcalico/calico/releases/download/v3.28.0/calicoctl-linux-amd64
# 添加执行权限
chmod +x calicoctl
# 将 calicoctl 移动到您的 PATH 中的目录,例如 /usr/local/bin
sudo mv calicoctl /usr/local/bin/
# 验证安装
root@master1:~# calicoctl version
Client Version: v3.28.0
Git commit: 413e6f559
Cluster Version: v3.28.0
Cluster Type: typha,kdd,k8s,operator,bgp,kubeadm
对于 Windows 用户,可以使用 PowerShell 进行下载:
Invoke-WebRequest -Uri https://github.com/projectcalico/calico/releases/download/v3.25.0/calicoctl-windows-amd64.exe -OutFile calicoctl.exe
# 将 calicoctl.exe 移动到您的 PATH 中的目录,例如 C:\Windows\System32
Move-Item calicoctl.exe C:\Windows\System32\
2. 配置 calicoctl
在使用 calicoctl
之前,需要将其配置为连接到 etcd 或 Kubernetes API 服务器。通过命令行配置运行:
DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl get nodes
以下是一个连接到 Kubernetes API 服务器为例,创建一个配置文件,例如 calicoctl.cfg
:
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
datastoreType: "kubernetes"
kubeconfig: "/etc/kubernetes/admin.conf"
然后可以使用以下命令将配置文件路径导入环境变量:
export CALICOCTL_CFG=/path/to/calicoctl.cfg
除了自定义配置文件路径外,calicoctl默认加载 /etc/calico/calicoctl.cfg
配置文件读取配置信息,也可以将上述配置文件放到该路径下。
常用命令
以下是一些常用的 calicoctl
命令:
1. 查看节点信息
calicoctl get nodes
2. 创建和管理 IP 池
- 创建 IP 池
cat <<EOF | calicoctl apply -f -
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: my-ippool
spec:
cidr: 172.16.0.0/12
ipipMode: Always
natOutgoing: true
EOF
- 查看 IP 池
calicoctl get ippools
# yaml格式输出
calicoctl get ipPool -o yaml
- 删除 IP 池
calicoctl delete ippool my-ippool
3. 创建和管理全局网络策略
- 创建全局网络策略
cat <<EOF | calicoctl apply -f -
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: allow-tcp-and-udp
spec:
selector: all()
ingress:
- action: Allow
protocol: TCP
source:
nets:
- 192.168.0.0/16
- action: Allow
protocol: UDP
source:
nets:
- 192.168.0.0/16
egress:
- action: Allow
protocol: TCP
- action: Allow
protocol: UDP
EOF
- 查看全局网络策略
calicoctl get globalnetworkpolicies
- 删除全局网络策略
calicoctl delete globalnetworkpolicy allow-tcp-and-udp
全局网络策略实战
使用busybox创建2个pod:
# yaml文件
root@master1:~/ingress-nginx# cat busybox-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: busybox-deployment
spec:
replicas: 2
selector:
matchLabels: