• 本地部署安装Calico网络


    2 本地部署安装Calico网络

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

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

    (3) Kubernetes API datastoreKubernetes工作负载推荐的数据存储。不建议将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,与集群配置保持一致
    wps1

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

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

    3) 备注: CALICO_IPV4POOL_IPIP
    wps3
    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,与集群配置保持一致
    wps4

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

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

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

    4) 备注: CALICO_IPV4POOL_IPIP
    wps7
    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证书
    wps8

    # 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的地址
    wps9

    # 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证书路径
    wps10

    # 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,与集群配置保持一致
    wps11

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

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

    6) 备注: CALICO_IPV4POOL_IPIP
    wps13
    Always # IPIP模式(默认)
    Never # BGP模式

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

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

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

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

    (3) 
    calico-kubeconfig认证文件
    wps16

    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
    wps17

    (2) 获取calico节点状态
    # calicoctl node status
    wps18
    提示:
    在节点上查看calico状态时,不显示当前节点的calico状态。
    比如在172.16.1.82(k8s-master2)
    节点上查看calico的状态如下:
    wps19

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

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

    #
    kubectl get pod -A -o wide
    wps22

    2.3 下线节点

    wps23 

    1 驱除异常节点上的服务

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

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

    2 删除node

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

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

    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 查看是否加入集群

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

  • 相关阅读:
    在项目中运用到的导航高亮
    【转载】IE8 inlineblock容器不撑开问题(利用重绘解决)
    我的博客正式开通
    【转载】响应式网页设计的9条基本原则
    一款不错的在线SVG制作工具
    【转载】前端不为人知的一面前端冷知识集锦
    11.3 Daily Scrum
    11.11 Daily Scrum
    11.7 Daily Scrum(周末暂停两天Daily Scrum)
    11.12 Daily Scrum(保存草稿后忘了发布·····)
  • 原文地址:https://www.cnblogs.com/LiuChang-blog/p/15311434.html
Copyright © 2020-2023  润新知