calicoctl 与 kubectl
在以前的版本中,calicoctl需要管理projectcalico.org/v3 API组中的Calico API资源。calicoctl CLI工具提供了对这些API的重要验证和默认设置。
在较新的版本中,Calico API服务器在服务器端执行默认和验证,公开相同的API语义,而不依赖于calicoctl。因此,我们建议安装Calico API服务器,并在大多数操作中使用kubectl而不是calicoctl。
calicoctl 以二进制文件运行
下载calicoctl
# curl -L https://github.com/projectcalico/calico/releases/latest/download/calicoctl-linux-amd64 -o calicoctl
添加执行权限
# chmod +x ./calicoctl
calicoctl 以kubectl 插件运行
下载calicoctl
# curl -L https://github.com/projectcalico/calico/releases/latest/download/calicoctl-linux-amd64 -o kubectl-calico
添加执行权限
# chmod +x ./calicoctl
验证插件
# kubectl calico -h
calicoctl 以pod方式运行
etcd
# kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calicoctl-etcd.yaml
Kubernetes API datastore
# kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calicoctl.yaml
验证calicoctl
# kubectl exec -ti -n kube-system calicoctl -- /calicoctl get profiles -o wide
NAME TAGS
kns.default kns.default
kns.kube-system kns.kube-system
配置 calicoctl 连接到 Kubernetes API 数据存储
默认配置
默认情况下,calicoctl将尝试使用位于$(HOME)/.kube/config的默认kubeconfig从Kubernetes API读取。
如果默认的kubeconfig不存在,或者您想指定替代的API访问信息,可以配置选项来指定。
连接 kubernetes API 配置选项
配置文件选项 | 环境变量 | 描述 | 模式 |
---|---|---|---|
datastoreType |
DATASTORE_TYPE |
指示要使用的数据存储。[默认值:kubernetes ] |
kubernetes ,etcdv3 |
kubeconfig |
KUBECONFIG |
使用 Kubernetes API数据存储时,要使用的 kubeconfig 文件的位置,例如 /path/to/kube/config。 | string |
k8sAPIEndpoint |
K8S_API_ENDPOINT |
Kubernetes API 的位置。如果使用 kubeconfig,则不需要。[默认值:https://kubernetes-api:443 ] |
string |
k8sCertFile |
K8S_CERT_FILE |
用于访问 Kubernetes API 的客户端证书的位置,例如/path/to/cert . |
string |
k8sKeyFile |
K8S_KEY_FILE |
用于访问 Kubernetes API 的客户端密钥的位置,例如/path/to/key . |
string |
k8sCAFile |
K8S_CA_FILE |
用于访问 Kubernetes API 的 CA 位置,例如/path/to/ca . |
string |
k8sToken |
用于访问 Kubernetes API 的令牌。 | string |
命令行方式连接
# DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl get nodes
配置文件示例
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
datastoreType: 'kubernetes'
kubeconfig: '/path/to/.kube/config'
访问单个 kubernetes API
# export DATASTORE_TYPE=kubernetes
# export KUBECONFIG=~/.kube/config
# calicoctl get workloadendpoints
OR
# export CALICO_DATASTORE_TYPE=kubernetes
# export CALICO_KUBECONFIG=~/.kube/config
# calicoctl get workloadendpoints
访问指定 kubernetes API
# export DATASTORE_TYPE=kubernetes
# export KUBECONFIG=~/.kube/main:~/.kube/auxy
# calicoctl get --context main workloadendpoints
# calicoctl get --context auxy workloadendpoints
检测配置文件
正确的设置将生成已注册节点的列表。如果返回了一个空列表,那么您要么指向了错误的数据存储,要么没有注册任何节点。如果返回错误,请尝试更正该问题,然后重试。
# calicoctl get nodes
配置 calicoctl 连接到 etcd 数据存储
连接 etcd 配置选项
配置文件选项 | 环境变量 | 描述 | 模式 |
---|---|---|---|
datastoreType |
DATASTORE_TYPE |
指示要使用的数据存储。如果未指定,则默认为kubernetes . (选修的) |
kubernetes ,etcdv3 |
etcdEndpoints |
ETCD_ENDPOINTS |
以逗号分隔的 etcd 端点列表。示例:(http://127.0.0.1:2379,http://127.0.0.2:2379 必填) |
string |
etcdDiscoverySrv |
ETCD_DISCOVERY_SRV |
通过 SRV 记录发现 etcd 端点的域名。与 互斥etcdEndpoints 。示例:(example.com 可选) |
string |
etcdUsername |
ETCD_USERNAME |
RBAC 的用户名。示例:(user 可选) |
string |
etcdPassword |
ETCD_PASSWORD |
给定用户名的密码。示例:(password 可选) |
string |
etcdKeyFile |
ETCD_KEY_FILE |
包含与客户端证书匹配的私钥的文件的路径calicoctl 。允许calicoctl 参与双向 TLS 身份验证并向 etcd 服务器标识自身。示例:(/etc/calicoctl/key.pem 可选) |
string |
etcdCertFile |
ETCD_CERT_FILE |
包含颁发给 的客户端证书的文件的路径calicoctl 。允许calicoctl 参与双向 TLS 身份验证并向 etcd 服务器标识自身。示例:(/etc/calicoctl/cert.pem 可选) |
string |
etcdCACertFile |
ETCD_CA_CERT_FILE |
包含颁发 etcd 服务器证书的证书颁发机构 (CA) 根证书的文件的路径。配置calicoctl 信任签署根证书的 CA。该文件可能包含多个根证书,导致calicoctl 信任所包含的每个 CA。示例:(/etc/calicoctl/ca.pem 可选) |
string |
etcdKey |
与客户端证书匹配的私钥calicoctl 。允许calicoctl 参与双向 TLS 身份验证并向 etcd 服务器标识自身。(可选) |
string | |
etcdCert |
客户端证书颁发给calicoctl . 允许calicoctl 参与双向 TLS 身份验证并向 etcd 服务器标识自身。(可选) |
string | |
etcdCACert |
颁发 etcd 服务器证书的证书颁发机构 (CA) 的根证书。配置calicoctl 信任签署根证书的 CA。配置文件可能包含多个根证书,导致calicoctl 信任其中包含的每个 CA。(可选) |
string |
配置文件示例
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
etcdEndpoints: https://etcd1:2379,https://etcd2:2379,https://etcd3:2379
etcdKeyFile: /etc/calico/key.pem
etcdCertFile: /etc/calico/cert.pem
etcdCACertFile: /etc/calico/ca.pem
包含证书信息的配置示例
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
datastoreType: etcdv3
etcdEndpoints: 'https://127.0.0.1:2379'
etcdCACert: |
-----BEGIN CERTIFICATE-----
MIICKzCCAZSgAwIBAgIBAzANBgkqhkiG9w0BAQQFADA3MQswCQYDVQQGEwJVUzER
MA8GA1UEChMITmV0c2NhcGUxFTATBgNVBAsTDFN1cHJpeWEncyBDQTAeFw05NzEw
MTgwMTM2MjVaFw05OTEwMTgwMTM2MjVaMEgxCzAJBgNVBAYTAlVTMREwDwYDVQQK
EwhOZXRzY2FwZTENMAsGA1UECxMEUHViczEXMBUGA==
-----END CERTIFICATE-----
etcdCert: |
-----BEGIN CERTIFICATE-----
gI6iLXgMsp2EOlD56I6FA1jrCtNb01XQvX3eyFuA6g5T1jWGYBDtvQb0WRVkdUy9
L/uK+sHQwtloCSuakcQAsWV9bajCQtHX8XGu25Yz56kpJ/OJjcishxT6pc/sthum
A5PX739JsNUi/p5aG+H/6eNx+ukJP7QaM646YCfS5i8S9DJUvim+/BSlKi2ZiOCd
0MYH4Xb7lmAOTNmTvSYpKo9J2fZ9erw0MYSBTyjh6F7PRbHBiivgUnJfGQ==
-----END CERTIFICATE-----
etcdKey: |
-----BEGIN RSA PRIVATE KEY-----
k0dWj16h9P6TvfcNl2iwT4VIwx0uy2faWBED1DrCJcuQCy5nPrts2ZIaAWPi1t3t
VbDKQvs+KXBEeqh0qYcYkejUXqIF0uKUFLjiQmZssjpL5RHqqWuYKbO87n+Jod1L
TjGRHdbP0zF2U0LdjM17rc2hpJ3qrmgJ7pOLzbXMcOr+NP1ojRCArXhQ4iLs7D8T
eHw9QH4luJYtnmk7x03izLMQdLWcKnUbqh/xOVPyazgJHXwRxwNXpMsBVGY=
-----END RSA PRIVATE KEY-----
使用环境变量示例
# ETCD_ENDPOINTS=http://myhost1:2379 calicoctl get bgppeers
使用etcd DNS 发现示例
# ETCD_DISCOVERY_SRV=example.com calicoctl get nodes
使用 IPv6 示例
创建一个在IPv6 localhost[::1]上侦听的单节点etcd集群。
# etcd --listen-client-urls=http://[::1]:2379 --advertise-client-urls=http://[::1]:2379
使用etcd IPv6群集
# ETCD_ENDPOINTS=http://[::1]:2379 calicoctl get bgppeers
检测配置文件
正确的设置将生成已注册节点的列表。如果返回了一个空列表,那么您要么指向了错误的数据存储,要么没有注册任何节点。如果返回错误,请尝试更正该问题,然后重试。
# calicoctl get nodes
参考文档
https://docs.tigera.io/calico/latest/operations/calicoctl/install
标签:calicoctl,string,kubernetes,示例,部署,API,etcd From: https://www.cnblogs.com/wangguishe/p/17638113.html