首页 > 其他分享 >部署 calicoctl v3.26.1

部署 calicoctl v3.26.1

时间:2023-11-01 11:31:49浏览次数:40  
标签:projectcalico calicoctl 示例 部署 API etcd org v3.26

calicoctl 与 kubectl

在 Calico v3.20 以前的版本中,calicoctl需要管理projectcalico.org/v3 API组中的Calico API资源。calicoctl CLI工具提供了对这些API的重要验证和默认设置。

在 Calico v3.20+ 以后的版本中,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

Calico API 列表

# kubectl api-resources | grep '\sprojectcalico.org'
bgpconfigurations                 bgpconfig,bgpconfigs                            projectcalico.org              false        BGPConfiguration
bgppeers                                                                          projectcalico.org              false        BGPPeer
clusterinformations               clusterinfo                                     projectcalico.org              false        ClusterInformation
felixconfigurations               felixconfig,felixconfigs                        projectcalico.org              false        FelixConfiguration
globalnetworkpolicies             gnp,cgnp,calicoglobalnetworkpolicies            projectcalico.org              false        GlobalNetworkPolicy
globalnetworksets                                                                 projectcalico.org              false        GlobalNetworkSet
hostendpoints                     hep,heps                                        projectcalico.org              false        HostEndpoint
ippools                                                                           projectcalico.org              false        IPPool
kubecontrollersconfigurations                                                     projectcalico.org              false        KubeControllersConfiguration
networkpolicies                   cnp,caliconetworkpolicy,caliconetworkpolicies   projectcalico.org              true         NetworkPolicy
networksets                       netsets                                         projectcalico.org              true         NetworkSet
profiles                                                                          projectcalico.org              false        Profile

参考文档

https://docs.tigera.io/calico/latest/operations/calicoctl/install



标签:projectcalico,calicoctl,示例,部署,API,etcd,org,v3.26
From: https://blog.51cto.com/wangguishe/8120378

相关文章

  • 【Azure App Service】为部署在App Service上的PHP应用开启JIT编译器
    问题描述在AppServiceforlinux上创建一个PHP应用,通过phpinfo()查看PHP的扩展设置,发现JIT没有被开启, jit_buffer_size大小为0.那么,在AppService的环境中,如何开启JIT呢? 问题解答PHP8在PHP的内核中添加了JIT编译器,可以极大地提高性能。首先,仅在启用opcache的情况下,JIT才有效......
  • Jenkins+Docker 一键自动化部署 SpringBoot 项目
    Jenkins和Docker是现代软件开发中非常流行的工具,可以帮助我们自动化构建、测试和部署应用程序。SpringBoot是一种流行的Java框架,可以帮助开发人员快速开发Web应用程序。在本文中,我们将介绍如何使用Jenkins和Docker一键自动化部署SpringBoot应用程序。准备工作首先,你需要安装并配......
  • Spring Boot自动化部署
    SpringBoot是一款非常流行的Java开发框架,它基于SpringFramework,提供了快速构建应用程序的能力。本文将介绍如何使用SpringBoot自动化部署,并详细讲解代码实现细节。自动化部署流程:一般的JavaWeb应用程序的部署流程如下:1)编写代码2)将代码打包成war文件3)将war文件上传到服务器4)在服......
  • Nacos 安装部署
    Nacos-Server服务部署Nacos依赖Java环境来运行。如果是从代码开始构建并运行Nacos,还需要配置Maven环境。我们直接使用发行版,需要保证JDK版本在1.8以上。NacosServer有两种运行模式:standaloneclusterstandalone模式从https://github.com/alibaba/nacos/releases......
  • prometheus几种高可用架构介绍及联邦架构部署
    **问题背景:**单个prometheus性能到达瓶颈问题、多个prometheus-server数据汇总问题等**prometheus监控数据持久化**首先大家都知道prometheus是自带数据存储功能的。优点是简单易用,基本无需配置缺点是:1、存在数据无法长久保存(尤其是频繁变更的监控对象,监控对象变化,短时间内监控......
  • Glance部署
    一:了解Glance组件的概念glance是镜像服务(imageservice)的项目代号,和keystone一样是一个支持wsgi的web服务,用户可以通过web访问和命令行控制Glance对镜像进行管理功能包括虚拟机的镜像,快照的注册,检索,删除,权限管理等,1:镜像的概念及功能就是传统的安装机子,就是要花费很多的时间--......
  • Apollo 配置中心的部署与使用经验
    前言Apollo(阿波罗)是携程开源的分布式配置管理中心。本文主要介绍其基于Docker-Compose的部署安装和一些使用的经验特点成熟,稳定支持管理多环境/多集群/多命名空间的配置配置修改发布实时(1s)通知到应用程序支持权限控制、配置继承,版本管理,灰度发布,使用监控等官方提供了......
  • 使用hardhat框架,将合约部署到Sepolia测试网中
    1.在hardhat.config.js中写入sepolia的测试网路径,以及自己私有钱包的密钥将自己的默认网络设置为测试网的网络,注意solidity的版本号要保持一致 2.在.env文件中填写基本参数,添加dotenv便于读  3.在etherscan.io/myapikey里面获取自己的apikey并添加到.env中 注意:在用ha......
  • 从数据预处理到模型部署
    近年来,人工智能技术的高速发展备受瞩目,而其中的一个关键领域就是机器学习模型的开发和部署。越来越多的企业和组织开始投入巨资进行模型开发和部署,以提升自身业务的智能化水平。为了帮助大家更好地理解和掌握模型开发与部署的相关知识,我们特地整理了本次直播的关键内容,带大家深入探......
  • Redis部署架构
    部署架构单节点(Single)优点架构简单,部署方便高性价比:缓存使用时无需备用节点(单实例可用性可以用supervisor或crontab保证),当然为了满足业务的高可用性,也可以牺牲一个备用节点,但同时刻只有一个实例对外提供服务高性能缺点不保证数据的可靠性在缓存使用,进......