首页 > 其他分享 >本地部署安装Calico网络

本地部署安装Calico网络

时间:2022-10-10 12:34:00浏览次数:47  
标签:kubectl calicoctl 本地 calico 部署 Calico etcd k8s 节点

2 本地部署安装Calico网络

(1) 官方文档: https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises

(2) 我这里集群使用的calico版本为v3.20.1。

(3) Kubernetes API datastore是Kubernetes工作负载推荐的数据存储。不建议将etcd数据库用于新安装。

但是,如果您将Calico 作为 OpenStack 和 Kubernetes 的网络插件运行,则它是一个选项。

 

在172.16.1.81(k8s-master1)节点上操作

2.1 文件配置

1 方式一: 使用Kubernetes API datastore安装Calico,50个或更少节点

(1) 下载
# wget https://docs.projectcalico.org/manifests/calico.yaml

(2) 修改配置文件
# vim calico.yaml
1) 修改pod CIDR,与集群配置保持一致
​​

本地部署安装Calico网络_初始化

​​
2) 配置calico选择某网卡进行通信

本地部署安装Calico网络_ico_02


- name: IP_AUTODETECTION_METHOD
value: "interface=eth1"
注: eth1为指定的通信网卡

3) 备注: CALICO_IPV4POOL_IPIP

本地部署安装Calico网络_初始化_03

​Always # 为IPIP模式(默认)
Never # 为BGP模式

(3) 初始化calico网络
# kubectl apply -f calico.yaml

2 方式二: 使用Kubernetes API datastore安装Calico,超过50个节点

(1) 下载
# wget https://docs.projectcalico.org/manifests/calico-typha.yaml

(2) 修改配置文件
# vim calico-typha.yaml
1) 修改pod CIDR,与集群配置保持一致
​​

本地部署安装Calico网络_ico_04

​​
2) 配置calico选择某网卡进行通信

本地部署安装Calico网络_sed_05


- name: IP_AUTODETECTION_METHOD
value: "interface=eth1"
注: eth1为指定的通信网卡

3) 修改Deployment命名为calico-typha的副本数
我们建议每200个节点至少有一个副本,并且不超过20个副本。在生产中,我们建议至少3个副本,以减少
滚动升级和故障的影响。副本数应始终小于节点数,否则滚动升级将停滞。

本地部署安装Calico网络_ico_06


4) 备注: CALICO_IPV4POOL_IPIP

本地部署安装Calico网络_ico_07

​Always # 为IPIP模式(默认)
Never # 为BGP模式

(3) 初始化calico网络
# kubectl apply -f calico-typha.yaml

3 方式三: 使用etcd datastore安装Calico

Calico使用etcd来保存网络拓扑和状态

(1) 下载
# wget https://docs.projectcalico.org/manifests/calico-etcd.yaml

(2) 修改配置文件
# vim calico-etcd.yaml
1) 填入etcd证书
​​

本地部署安装Calico网络_sed_08

​​
# cat /usr/local/etcd/ssl/etcd-key.pem | base64 -w 0 > ETCD-KEY
# cat /usr/local/etcd/ssl/ca.pem | base64 -w 0 > ETCD-CA
# cat /usr/local/etcd/ssl/etcd.pem | base64 -w 0 > ETCD-CERT

# sed -i "s?# etcd-key: null?etcd-key: $(cat ETCD-KEY)?" calico-etcd.yaml
# sed -i "s?# etcd-ca: null?etcd-ca: $(cat ETCD-CA)?" calico-etcd.yaml
# sed -i "s?# etcd-cert: null?etcd-cert: $(cat ETCD-CERT)?" calico-etcd.yaml

2) 填入etcd的地址

本地部署安装Calico网络_初始化_09


# sed -i \
's?http://<ETCD_IP>:<ETCD_PORT>?https://172.16.1.81:2379,https://172.16.1.82:2379,https://172.16.1.83:2379?' \
calico-etcd.yaml

3) 开启etcd证书路径

本地部署安装Calico网络_初始化_10


# sed -i 's?etcd_ca: ""?etcd_ca: "/calico-secrets/etcd-ca"?' calico-etcd.yaml
# sed -i 's?etcd_cert: ""?etcd_cert: "/calico-secrets/etcd-cert"?' calico-etcd.yaml
# sed -i 's?etcd_key: ""?etcd_key: "/calico-secrets/etcd-key"?' calico-etcd.yaml

4) 修改pod CIDR,与集群配置保持一致

本地部署安装Calico网络_ico_11


5) 配置calico选择某网卡进行通信

本地部署安装Calico网络_初始化_12


- name: IP_AUTODETECTION_METHOD
value: "interface=eth1"
注: eth1为指定的通信网卡

6) 备注: CALICO_IPV4POOL_IPIP

本地部署安装Calico网络_初始化_13

​Always # 为IPIP模式(默认)
Never # 为BGP模式

(3) 初始化calico网络
# kubectl apply -f calico-etcd.yaml

4 查看网络(方式三环境)

(1) 查看所有pod的状态
​​

本地部署安装Calico网络_ico_14

​​
(2) calico本地文件存储(每个安装kubelet的节点上都有)
/opt/cni/bin/、/etc/cni/net.d/、/var/lib/cni/

本地部署安装Calico网络_ico_15


(3) calico-kubeconfig认证文件

本地部署安装Calico网络_ico_16

2.2 将calicoctl作为二进制文件安装在单个主机上

calicoctl用于管理Calico策略和配置,以及查看详细的集群状态,比如查看IP池利用率和BGP状态。

保始终安装calicoctl与集群上运行的 Calico 版本匹配的版本。

官方文档: https://docs.projectcalico.org/getting-started/clis/calicoctl/install

 

1 下载插件

# wget https://github.com/projectcalico/calicoctl/releases/download/v3.20.1/calicoctl-linux-amd64
# mv calicoctl-linux-amd64 /usr/bin/calicoctl
# chmod +x /usr/bin/calicoctl

 

2 验证

默认通过/root/.kube/config访问api-server
(1) 获取calico节点
# calicoctl get node
​​

本地部署安装Calico网络_sed_17

​​
(2) 获取calico节点状态
# calicoctl node status

本地部署安装Calico网络_ico_18

​提示:
在节点上查看calico状态时,不显示当前节点的calico状态。
比如在172.16.1.82(k8s-master2)节点上查看calico的状态如下:

本地部署安装Calico网络_sed_19


(3) 查看工作中的负载节点
# calicoctl get workloadendpoints

本地部署安装Calico网络_ico_20


(4) 查看当前集群状态
# kubectl get nodes

本地部署安装Calico网络_初始化_21


# kubectl get pod -A -o wide

本地部署安装Calico网络_sed_22

2.3 下线节点

本地部署安装Calico网络_ico_23

​ 

1 驱除异常节点上的服务

# kubectl drain <异常节点的nodename> --delete-local-data --force --ignore-daemonsets
# kubectl drain k8s-node1 --delete-local-data --force --ignore-daemonsets

# 驱除后查看Pod是否成功迁移到其他节点
​​

本地部署安装Calico网络_ico_24

2 删除node

# kubectl delete node <异常节点的nodename>
# kubectl delete node k8s-node1

# 删除后查看该node是否去除
​​

本地部署安装Calico网络_sed_25

3 清除节点信息(防止重新加入集群报错)

在172.16.1.83(k8s-node1)节点上操作

# iptables -nL
# iptables -F
# iptables -X
# iptables -Z

注: kubeadm还需要使用如下步骤
# kubeadm reset

4 删除多余网卡(正常网卡和docker0桥除外)

在172.16.1.83(k8s-node1)节点上操作

# systemctl restart docker
# ifconfig <网卡名> down <=> ip link set <网卡名> down
# ip link delete <网卡名>
# rm -rf /opt/cni/bin/*
# rm -rf /etc/cni/net.d/*
# rm -rf /var/lib/cni/*

5 重新加入集群

(1) 二进制
# 重启kubelet服务
[root@k8s-node1 ~]# systemctl restart kubelet.service

(2) kubeadm方式
# 重新生成node加入集群的token,有效时间24小时
[root@k8s-master1 ~]# kubeadm token create --print-join-command

 

6 查看是否加入集群

本地部署安装Calico网络_初始化_26

​[root@k8s-master1 ~]# calicoctl node status



标签:kubectl,calicoctl,本地,calico,部署,Calico,etcd,k8s,节点
From: https://blog.51cto.com/u_11409186/5743144

相关文章

  • 第20章: 二进制方式部署K8S1.20高可用集群
      二进制方式部署K8S1.20高可用集群   作者刘畅时间2021-08-27  目录​​1 架构说明 4​​​​1.1生产环境可部署Kubernetes集群的两种方式 4​​​​1.2准备环......
  • yolov5部署到iPhone或终端实践全过程一(论文源码福利)
    计算机视觉研究院专栏作者:Edison_G期待已久的检测经典又来来了一波强袭——yolov5。其实yolov5没有完整的文件,现在最重要的应该是把yolov4弄清楚,在目标检测领域中受益匪浅,可......
  • C# 获取本地IP地址
    1///<summary>2///获取本地的IP地址3///</summary>4///<returns></returns>5publicstaticstringGetAddressIP()6{7stringAddressIP=st......
  • DOCKER 部署 CANAL
    DOCKER部署CANAL1、MYSQL开启binlog前提MYSQL已经安装完成,canal采用读取Mysql的binlog日志来实现数据同步,需要修改mysql配置为难my.cnf,并将binlog的格式模式设置为ROW,其......
  • 模型部署:pytorch转onnx部署实践(下)
    公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式计算机视觉研究院专栏在深度学习模型部署时,从pytorch转换onnx的过程中,踩了一些坑。本文总结了这些踩坑记录,希望可以......
  • 数据守护集群部署(两节点实时主备)
    环境说明实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORTGRP1_013214133141192.168.44.1736114152141GRP1_023214233142192.168.44.......
  • sandbox 快速部署mysql
    MySQLSandboxisatoolthatinstallsoneormoreMySQLserverswithinseconds,easily,securely,andwithfullcontrol.Onceinstalled,thesandboxiseasilyus......
  • jsp操作本地数据库
    @目录环境准备检查驱动下载驱动配置Tomcat配置idea开始上手测试连接主界面显示列出全部学生模块实现条件查询学生模块实现添加学生模块实现条件删除学生模块实现条件修改学......
  • nginx+uwsgi 部署 django项目
    一、nginx:1.目录结构、常用命令和查杀进程:/usr/sbin/nginx:主程序/etc/nginx:存放配置文件/usr/share/nginx:存放静态文件/var/log/nginx:存放日志2.命令:servicenginxsta......
  • spring boot 工程热部署
    我的idea版本是:IntelliJIDEA2022.2.2(CommunityEdition)Build#IC-222.4167.29,builtonSeptember13,2022Runtimeversion:17.0.4+7-b469.53amd64VM:OpenJD......