天天看点

本地部署安装Calico网络

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个或更少节点

下载

#

wget https://docs.projectcalico.org/manifests/calico.yaml

修改配置文件

# vim

calico.yaml

1) 修改pod

CIDR,与集群配置保持一致

本地部署安装Calico网络

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

本地部署安装Calico网络

-

name: IP_AUTODETECTION_METHOD

value:

"interface=eth1"

注: eth1为指定的通信网卡

3) 备注: CALICO_IPV4POOL_IPIP

本地部署安装Calico网络

Always # 为IPIP模式(默认)

Never

# 为BGP模式

(3)

初始化calico网络

# kubectl apply -f calico.yaml

方式二:

使用Kubernetes API

datastore安装Calico,超过50个节点

# wget https://docs.projectcalico.org/manifests/calico-typha.yaml

calico-typha.yaml

本地部署安装Calico网络
本地部署安装Calico网络

3) 修改Deployment命名为calico-typha的副本数

我们建议每200个节点至少有一个副本,并且不超过20个副本。在生产中,我们建议至少3个副本,以减少

滚动升级和故障的影响。副本数应始终小于节点数,否则滚动升级将停滞。

本地部署安装Calico网络

4) 备注: CALICO_IPV4POOL_IPIP

本地部署安装Calico网络

# kubectl apply -f calico-typha.yaml

3 方式三: 使用 etcd 安装Calico

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

# wget

https://docs.projectcalico.org/manifests/calico-etcd.yaml

calico-etcd.yaml

1) 填入etcd证书

本地部署安装Calico网络

# cat

/usr/local/etcd/ssl/etcd-key.pem | base64 -w 0 > ETCD-KEY

/usr/local/etcd/ssl/ca.pem | base64 -w 0 > ETCD-CA

/usr/local/etcd/ssl/etcd.pem | base64 -w 0 > ETCD-CERT

sed -i "s?# etcd-key: null?etcd-key: $(cat ETCD-KEY)?"

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)?"

2) 填入etcd的地址

本地部署安装Calico网络

# 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?'

\

3) 开启etcd证书路径

本地部署安装Calico网络

sed -i 's?etcd_ca: ""?etcd_ca: "/calico-secrets/etcd-ca"?'

sed -i 's?etcd_cert: ""?etcd_cert: "/calico-secrets/etcd-cert"?'

sed -i 's?etcd_key: ""?etcd_key: "/calico-secrets/etcd-key"?'

4) 修改pod

本地部署安装Calico网络

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

本地部署安装Calico网络

6) 备注: CALICO_IPV4POOL_IPIP

本地部署安装Calico网络

# kubectl apply -f calico-etcd.yaml

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

(1) 查看所有pod的状态

本地部署安装Calico网络

calico本地文件存储(每个安装kubelet的节点上都有)

/opt/cni/bin/、/etc/cni/net.d/、/var/lib/cni/

本地部署安装Calico网络

(3) calico-kubeconfig认证文件

本地部署安装Calico网络

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

获取calico节点

calicoctl get node

本地部署安装Calico网络

获取calico节点状态

# calicoctl node status

本地部署安装Calico网络

提示:

在节点上查看calico状态时,不显示当前节点的calico状态。

比如在172.16.1.82(k8s-master2)节点上查看calico的状态如下:

本地部署安装Calico网络

(3) 查看工作中的负载节点

calicoctl get workloadendpoints

本地部署安装Calico网络

(4)

查看当前集群状态

kubectl get nodes

本地部署安装Calico网络

# kubectl get pod -A -o wide

本地部署安装Calico网络

.3 下线节点

本地部署安装Calico网络

驱除异常节点上的服务

# kubectl

drain <异常节点的nodename> --delete-local-data

--force --ignore-daemonsets

# kubectl

drain k8s-node1 --delete-local-data --force --ignore-daemonsets

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

本地部署安装Calico网络

删除node

delete node <异常节点的nodename>

kubectl delete node k8s-node1

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

本地部署安装Calico网络

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

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

# iptables -nL

iptables -F

iptables -X

# iptables -Z

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

# kubeadm reset

删除多余网卡(正常网卡和docker 桥除外

# 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 重新加入集群

6 查看是否加入集群