部署calico网络插件

部署calico网络插件

之前的k8s环境中主要使用了flannel作为网络插件,这次改用calico。calico支持多种安装方式,以下是具体的操作步骤。

1. 准备工作

  1. 环境信息
# 系统信息
root@master1:~# cat /etc/issue
Ubuntu 24.04 LTS \n \lroot@master1:~# uname -r
6.8.0-31-generic# k8s版本
root@master1:~# kubectl get node
NAME      STATUS     ROLES           AGE    VERSION
master1   NotReady   control-plane   2m2s   v1.28.2
node1     NotReady   <none>          84s    v1.28.2
node2     NotReady   <none>          79s    v1.28.2
  1. 版本配套

以最新的calico v3.28版本为例,适配如下k8s版本,我选用这个版本进行安装。

  • v1.27
  • v1.28
  • v1.29
  • v1.30

参考自:System requirements | Calico Documentation (tigera.io)

2. Operator方式安装

  1. 安装operator
# 下载operator资源清单文件
root@master1:~/calico# wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml
# 或者
root@master1:~/calico# curl https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml -O# 创建应用资源清单文件,创建operator
root@master1:~/calico# kubectl create -f tigera-operator.yaml
namespace/tigera-operator created
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgpfilters.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/caliconodestatuses.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipreservations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/apiservers.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/imagesets.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/installations.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/tigerastatuses.operator.tigera.io created
serviceaccount/tigera-operator created
clusterrole.rbac.authorization.k8s.io/tigera-operator created
clusterrolebinding.rbac.authorization.k8s.io/tigera-operator created
deployment.apps/tigera-operator created
  1. 创建CRD资源
# 下载CRD资源清单文件
root@master1:~/calico# wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/custom-resources.yaml#修改custom-resources.yaml的ip
root@master1:~/calico# vim custom-resources.yamlapiVersion: operator.tigera.io/v1
kind: Installation
metadata:name: default
spec:# Configures Calico networking.calicoNetwork:ipPools:- name: default-ipv4-ippoolblockSize: 24			# 改为24,每个节点一个C段地址cidr: 10.244.0.0/16		# 与kubeadm初始化时"--pod-network-cidr=10.244.0.0/16"保持一致encapsulation: VXLANCrossSubnetnatOutgoing: EnablednodeSelector: all()# 创建应用资源清单文件,创建operator
root@master1:~/calico# kubectl create -f custom-resources.yaml
installation.operator.tigera.io/default created
apiserver.operator.tigera.io/default created
  1. 确认安装的pod

watch kubectl get pods -n calico-system

问题记录

  1. node节点NotReady
root@master1:~/calico# kubectl get pod -n calico-system
NAME                                      READY   STATUS    RESTARTS      AGE
calico-kube-controllers-b7fb9d96c-pbf9s   1/1     Running   0             47m
calico-node-gdsjw                         1/1     Running   2 (16m ago)   47m
calico-node-hvqg4                         1/1     Running   0             15m
calico-node-nntpd                         0/1     Running   0             42s
calico-typha-55ccdf44bf-v2zmm             1/1     Running   0             15m
calico-typha-55ccdf44bf-w5l8w             1/1     Running   0             47m
csi-node-driver-bqvb7                     2/2     Running   0             47m
csi-node-driver-cw59h                     2/2     Running   0             47m
csi-node-driver-hbw2n                     2/2     Running   0             47mWarning  Unhealthy  55s (x2 over 56s)  kubelet            Readiness probe failed: calico/node is not ready: BIRD is not ready: Error querying BIRD: unable to connect to BIRDv4 socket: dial unix /var/run/calico/bird.ctl: connect: connection refusedWarning  Unhealthy  28s                kubelet            Readiness probe failed: 2024-07-01 08:57:58.226 [INFO][267] confd/health.go 202: Number of node(s) with BGP peering established = 2
calico/node is not ready: felix is not ready: Get "http://localhost:9099/readiness": dial tcp: lookup localhost on 8.8.8.8:53: no such host

解决:

root@master1:~/calico# vi custom-resources.yaml
...
spec:# Configures Calico networking.calicoNetwork:ipPools:- name: default-ipv4-ippoolblockSize: 24cidr: 10.244.0.0/16encapsulation: VXLANCrossSubnetnatOutgoing: EnablednodeSelector: all()nodeAddressAutodetectionV4:		#增加的配置interface: ens*# 更新
root@master1:~/calico# kubectl apply -f custom-resources.yaml# 同时修改节点的dns
root@node1:~# cat /etc/netplan/01-concfg.yaml
network:version: 2renderer: networkdethernets:ens33:dhcp4: noaddresses:- 192.168.0.62/24routes:- to: 0.0.0.0/0via: 192.168.0.1nameservers:addresses:- 223.5.5.5- 223.6.6.6# 更改生效
root@node1:~# netplan apply

3. Manifest方式安装

根据node节点数量和使用的db选择如下之一方式进行安装:

  • Install Calico with Kubernetes API datastore, 50 nodes or less
  • Install Calico with Kubernetes API datastore, more than 50 nodes
  • Install Calico with etcd datastore

以小于50个node,使用Kubernetes API datastore为例:

  1. 下载使用 Kubernetes API datastore的manifest

    curl https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml -O
    
  2. 修改Pod CIDR

    取消注释CALICO_IPV4POOL_CIDR,修改Pod CIDR。

  3. 基于YAML进行创建

kubectl apply -f calico.yaml

4. helm方式安装

本次部署安装calico作为k8s的网络插件,使用helm进行安装:

# 下载安装helm
wget https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz
tar xf helmelm-v3.15.2-linux-amd64.tar.gz
cd linux-amd64/helm /usr/local/bin/helm
helm version

安装calico:

# 创建tigera-operator命名空间
kubectl create namespace tigera-operator
# 安装tigera calico operator ,创建crd资源
helm install calico projectcalico/tigera-operator --version v3.28.0 --namespace tigera-operator
# 确认相关pod运行正常
watch kubectl get pods -n calico-system

准备工作

  • 已经按照helm3
  • 已经按照k8s环境
  • 已经配置完成kubeconfig
  • Calico可以管理主机上的calitunl接口。如果使用了NetworkManager,参考 Configure NetworkManager.

安装

  1. 添加calico helm repo:
helm repo add projectcalico https://docs.tigera.io/calico/charts

如果要自定义chart相关的参数,可以配置values.yaml

cat > values.yaml <<EOF
installation:kubernetesProvider: AKScni:type: CalicocalicoNetwork:bgp: DisabledipPools:- cidr: 10.244.0.0/16encapsulation: VXLAN
EOF
  1. 创建tigera-operator命名空间.
kubectl create namespace tigera-operator
  1. 使用helm chart安装Tigera Calico operator 和CRD
helm install calico projectcalico/tigera-operator --version v3.28.0 --namespace tigera-operator

或者使用values.yaml传递参数值 :

helm install calico projectcalico/tigera-operator --version v3.28.0 -f values.yaml --namespace tigera-operator
  1. 确认pod运行正常
watch kubectl get pods -n calico-system

说明

Tigera operator安装到calico-system命名空间,其他安装方式使用了 kube-system命名空间。

参考:

Install using Helm | Calico Documentation (tigera.io)

5. 参考资料

  1. https://helm.sh/zh/docs/intro/install/
  2. https://github.com/helm/helm/releases/
  3. https://docs.tigera.io/calico/latest/getting-started/kubernetes/
  4. Releases · projectcalico/calico (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatisPlus 常用的注解 表映射 主键映射 字段映射

介绍 官网&#xff1a;https://baomidou.com/reference/annotation/ 指定映射表 实体类使用驼峰命名&#xff0c;表名应为xx_xxx等格式这样才可以映射&#xff0c;但是实际开发过程中可能不一致就可以使用该方法处理。 Data TableName("employee_235") //映射的表…

求质数题目

//需求:键盘录入一个正整数x&#xff0c;判断该整数是否为一个质数。 //质数: //如果一个整数只能被1和本身整除&#xff0c;那么这个数就是质数。否则这个数叫做合数 package Base_se.Base_701;import java.util.Scanner;/*** author gyf* ClassName test* Date 2024/7/1 19:…

Linux启动elasticsearch,提示权限不够

Linux启动elasticsearch&#xff0c;提示权限不够&#xff0c;如下图所示&#xff1a; 解决办法&#xff1a; 设置文件所有者&#xff0c;即使用户由权限访问文件 sudo chown -R 用户名[:新组] ./elasticsearch-8.10.4 //切换到elasticsearch-8.10.4目录同级 chown详细格式…

银行家算法-操作系统中避免死锁的最著名算法

背景 有很多文章都会介绍银行家算法。在百度和CSDN上搜一搜能搜出很多来。很多同学会觉得这个算法很深奥&#xff0c;有些文章写的又很复杂&#xff0c;其实真的很简单。这里简单记录一下基本原理&#xff0c;然后大家再配合其他文章看&#xff0c;就能加深理解。 算法原理 …

LLaVA1.5训练数据和时间分析

LLaVA的PT+SFT训练_llava sft-CSDN博客文章浏览阅读379次。这个阶段,使用8个A100(80G)训练LLaVA-v1.5-13B大约需要20h。全量微调,非lora跑不起来啊,以前一直用swift,llama-factory这种框架式的代码库,但用原作者开源的代码也是有很多好处的。在这个阶段,使用 8 个 A100(…

Oracle中 ROW_NUMBER()的语法及在对应不同需求下应如何使用

Oracle数据库中的ROW_NUMBER()函数是一个窗口函数&#xff0c;它为查询结果集中的每一行分配一个唯一的序号。这个函数在数据分析、分页查询、数据去重和排名问题等方面非常有用。ROW_NUMBER()函数的语法如下&#xff1a; ROW_NUMBER() OVER ( [ PARTITION BY column ] ORDER …

3.用户程序与驱动交互

驱动程序请使用第二章https://blog.csdn.net/chenhequanlalala/article/details/140034424 用户app与驱动交互最常见的做法是insmod驱动后&#xff0c;生成一个设备节点&#xff0c;app通过open&#xff0c;read等系统调用去操作这个设备节点&#xff0c;这里先用mknode命令调…

64.WEB渗透测试-信息收集- WAF、框架组件识别(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;63.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;3&#xff09;-CSDN博客 我们在…

【FedMut】Generalized Federated Learning via Stochastic Mutation

基于随机变异的泛化联邦学习 来源&#xff1a;AAAI2024 Abstract 问题&#xff1a; FedAvg 将相同的全局模型派发给客户端进行本地训练&#xff0c;容易陷入尖锐解&#xff0c;导致训练出性能低下的全局模型 提出 FedMut&#xff1a; 本文提出了一种名为 FedMut 的新型FL方法…

2024免费的股票数据接口API

沧海数据 # Restful API https://tsanghi.com/api/fin/stock/{exchange_code}/realtime?token5dbb47113a4a43a6be1755673ce854db&ticker{ticker} 数据来源&#xff1a;沧海数据 请求方式&#xff1a;Get 数据格式&#xff1a;标准Json格式[{},...{}]

如何借用物联网快速实现高标准农田信息化

如何借用物联网快速实现高标准农田信息化 高标准农田信息化&#xff0c;作为现代农业发展的重要基石&#xff0c;是指在建设高产、稳产、节水、环保的农田基础上&#xff0c;深度融合现代信息技术&#xff0c;实现农田管理的精准化、智能化和高效化。物联网&#xff08;Intern…

vue3+ts实现计算两个字符串的相似度

在TypeScript中&#xff0c;可以使用Levenshtein莱文斯坦距离算法来精确匹配两个字符串的相似度百分比。Levenshtein距离是指两个字符串之间&#xff0c;由一个转换成另一个所需的最少编辑操作次数&#xff0c;这里的编辑操作包括插入、删除、替换。 /*** Levenshtein距离算法…

Linux Static calls机制

文章目录 前言一、简介二、Background: indirect calls, Spectre, and retpolines2.1 Indirect calls2.2 Spectre (v2)2.3 RetpolinesConsequences 2.4 Static callsHow it works 三、其他参考资料 前言 Linux内核5.10内核版本引入新特性&#xff1a;Static calls。 Static c…

JAVA各版本-安装教程

目录 Java安装包下载 Java安装步骤 Java环境配置 Java安装包下载 到Oracle官网下载自己需要的版本 Oracle Java下载&#xff1a;Java Archive | Oracle Hong Kong SAR, PRC 下拉选择自己需要的版本&#xff08;本教程以Windows环境下&#xff0c;JAVA11为例&#xff09; 注…

C++初学者指南-3.自定义类型(第一部分)-指针

C初学者指南-3.自定义类型(第一部分)-指针 文章目录 C初学者指南-3.自定义类型(第一部分)-指针1.为什么我们需要它们&#xff1f;2.T 类型的对象指针原始指针&#xff1a;T * 智能指针(C11) 3.操作符地址操作符 &解引用运算符 *成员访问操作符 ->语法重定向 4.nullptr (…

【Linux】用户管理

创建与删除 adduser adduser 是一个交互式命令&#xff0c;用于创建新用户并设置初始环境。 sudo adduser 用户名示例&#xff1a; sudo adduser newuseruseradd useradd 是一个非交互式命令&#xff0c;允许你通过选项指定用户的属性。 sudo useradd [选项] 用户名常见选…

SCADA系统对于工业生产的意义!

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 SCADA系统在智能制造中扮演着至关重要的角色&#xff0c;它通过集成和自动化工厂车间的各种过程&#xff0c;提高了生产效率和产品质量&#xff0c;降低了成本&#xff0c;并…

【AI绘画 ComfyUI】全新整合包来袭!一键安装 即开即用,超好用的工作流形式的AI绘画工具!

大家好&#xff0c;我是画画的小强 请在看这篇文章的人注意&#xff0c;本文章介绍的Comfy UI整合包是一个节点式的工作&#xff0c;流式的AI绘画界面&#xff0c;并不适合新手使用。 如果你在找的是Web UI, 请前往我之前发布一篇的文章AI绘画『Stable Diffusion』面向小白的…

【高中数学/基本不等式】设a,b>0.a+b=5,则 根号下(a+1)+根号下(b+3) 的最大值为?(2015重庆卷)

【问题】 设a,b>0.ab5,则根号下(a1)根号下(b3)的最大值为&#xff1f; 【解答】 解法一&#xff1a; 因双根号计算不便&#xff0c;故采用平方后简化之。 原式的平方a12倍根号下((a1)(b3))b3 ab42倍根号下((a1)(b3)) 因为ab5 a1b31359 9(a1)(b3)>2倍根号下((a1)…

【小贪】项目实战——Zero-shot根据文字提示分割出图片目标掩码

目标描述 给定RGB视频或图片&#xff0c;目标是分割出图像中的指定目标掩码。我们需要复现两个Zero-shot的开源项目&#xff0c;分别为IDEA研究院的GroundingDINO和Facebook的SAM。首先使用目标检测方法GroundingDINO&#xff0c;输入想检测目标的文字提示&#xff0c;可以获得…