zoukankan      html  css  js  c++  java
  • k8s集群安装calico插件

    calico官方地址:

    https://docs.projectcalico.org/getting-started

    自定义安装说明页面

    https://docs.projectcalico.org/getting-started/kubernetes/installation/config-options

    准备工作:

    1、下载文件:

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

    准备好配置文件中提到的镜像,如下,自己本地下载好之后,传到自己的私有仓库中,然后修改文件中的镜像地址,如果不这样的话,每个node会从官方镜像仓库下载镜像,启动过程异常缓慢,甚至安装失败

      

    2、下载镜像:

    docker pull calico/cni:v3.13.3
    
    docker pull calico/pod2daemon-flexvol:v3.13.3
    
    docker pull calico/node:v3.13.3
    
    docker pull image: calico/kube-controllers:v3.13.3
    
    #在本地启动一个镜像仓库(也可以传到自己现有的私有仓库,如habor):
    
    docker run -itd -p 5000:5000 -v /opt/data/registry:/var/lib/registry --name private_registry registry

    3、修改镜像tag,并上传在本地的私有仓库

    #修改tag
    
    docker tag calico/node:v3.13.3 192.168.1.111:5000/calico/node:v3.13.3
    
    docker tag calico/pod2daemon-flexvol:v3.13.3 192.168.1.111:5000/calico/pod2daemon-flexvol:v3.13.3
    
    docker tag calico/cni:v3.13.3 192.168.1.111:5000/calico/cni:v3.13.3
    
    docker tag calico/kube-controllers:v3.13.3 192.168.1.111:5000/calico/kube-controllers:v3.13.3
    
    #上传
    
    docker push 192.168.1.111:5000/calico/node:v3.13.3
    
    docker push 192.168.1.111:5000/calico/pod2daemon-flexvol:v3.13.3
    
    docker push 192.168.1.111:5000/calico/cni:v3.13.3
    
    docker push 192.168.1.111:5000/calico/kube-controllers:v3.13.3

    修改每个node上信任的仓库地址,然后重启docker

    vim /etc/docker/daemon.json

    如下:

     1 ##egistry-mirror是docker国内加速地址
     2 
     3 ##insecure-registries 是docker信任的没有走https的仓库地址
     4 
     5 { "registry-mirrors": ["https://registry.docker-cn.com",
     6 
     7                         "http://f1361db2.m.daocloud.io",
     8 
     9                         "http://hub-mirror.c.163.com"],
    10 
    11   "insecure-registries":["192.168.1.111:5000"]
    12 
    13  }
    14 

    重启docker服务,并查看配置是否生效,如图所示,Insecure Registries里面包含了我们设置的仓库地址

    service docker restart 
    
    docker info

    正式开始了:

    一、修改配置文件calica-etcd.yaml文件

    1、修改etcd数据库地址以及证书认证

    1  etcd_endpoints:  calico连接的etcd数据库,也就是k8s中的etcd集群地址,也可以单独配置calico的etcd数据库,和k8s集群的数据库分开,但是这样增加了开销,不必要
    2 
    3  etcd_ca:  "/calico-secrets/etcd-ca"  连接etcd数据库集群的认证,这里只是一个名字,宿主机上的地址会在后面数据卷中定义出来
    4 
    5  etcd_cert: "/calico-secrets/etcd-cert"
    6 
    7  etcd_key: "/calico-secrets/etcd-key"

    设置etcd的认证文件,文件中使用是这样的挂载名字,如下图,需要我们去指定宿主机上的源文件目录

    我不是用secret的方式定义的,所以要换成宿主机地址映射的方式,定义hostPath,将真实的地址写在path后面 ,如下图

    注意,每个node上都需要这个目录存在,并且有相应的认证文件(/etc/etcd/etcdSSL是etcd的认证证书存放目录)

    mkdir /etc/calico/calicoTSL -p
    
    cp /etc/etcd/etcdSSL/ca.pem /etc/calico/calicoTSL/etcd-ca
    
    cp /etc/etcd/etcdSSL/etcd-key.pem /etc/calico/calicoTSL/etcd-key
    
    cp /etc/etcd/etcdSSL/etcd.pem /etc/calico/calicoTSL/etcd-cert

    2、修改calico的镜像地址

    如准备工作步骤中所说,不提前准备好镜像的话,极有可能导致节点下载镜像失败,最终安装失败,千万不要忽略。

    先看一下文件中所用到的镜像名字和版本,如上图,下载并上传到自己本地仓库中,修改配置文件中镜像的名字,如下:

    3、修改集群网段

    默认是192.168.0.0/16网段,但是和我们的服务器本来的网段一样,会产生冲突,所以我们需要修改一下,注意,这个网段应该与kubeapi定义--service-cluster-ip-range的网段一样

    修改好了如下:

    4、配置calico的环境变量

    在calico-node的配置中加入环境变量,注意将格式对齐,不然会报错的

    1 - name: KUBERNETES_SERVICE_HOST
    2 value: "192.168.1.111"    #APIserver的地址
    3 - name: KUBERNETES_SERVICE_PORT
    4 value: "6443"    ##APIserver的监听端口
    5 - name: KUBERNETES_SERVICE_PORT_HTTPS
    6 value: "6443"    ##APIserver的监听端口

    如下图:

    、修改好之后,kubectl启动:

    kubectl apply -f /etc/calico/calico-etcd.yaml

    稍后就可以执行kubectl get pod -A 查看pod运行情况:

      

    三、后续如果发生异常时,可以用到的命令:

    kubectl logs -f calico-node-5rgfg -n kube-system   查看pod产生的日志
    
    kubectl describe pod  calico-node-5rgfg -n kube-system  查看pod的具体描述
    
    kubectl -n kube-system get ev  查看集群环境输出

    使用calicoctl命令:

    wget https://github.com/projectcalico/calicoctl/releases/download/v3.13.3/calicoctl
    
    chmod +x calicoctl
    
    mv calicoctl /usr/bin/
    
    DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl get nodes
    
  • 相关阅读:
    windows系统Redis客户端连接远程服务器
    Linux安装JDK1.8示例
    Nexus OrientDB数据库变为只读 storage is switched to 'read only' mode
    在SQL中有时候我们需要查看现在正在SQL Server执行的命令
    注册asp.net 到 iis时出错中的一种的 解决办法
    python 装饰器
    python 类调用实例的方法
    linux 命令大全
    python多态
    python扩展字典的功能
  • 原文地址:https://www.cnblogs.com/Christine-ting/p/12837250.html
Copyright © 2011-2022 走看看