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会从官方镜像仓库下载镜像,启动过程异常缓慢,甚至安装失败

window 安装Kubernetes kubernetes calico 安装_ico

  

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

 

window 安装Kubernetes kubernetes calico 安装_window 安装Kubernetes_02

 

 

 

正式开始了:

 

 

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

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

window 安装Kubernetes kubernetes calico 安装_ico_03

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的认证文件,文件中使用是这样的挂载名字,如下图,需要我们去指定宿主机上的源文件目录

window 安装Kubernetes kubernetes calico 安装_2d_04

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

window 安装Kubernetes kubernetes calico 安装_docker_05

注意,每个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

 

window 安装Kubernetes kubernetes calico 安装_window 安装Kubernetes_06

 

 

2、修改calico的镜像地址

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

window 安装Kubernetes kubernetes calico 安装_docker_07

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

window 安装Kubernetes kubernetes calico 安装_docker_08

 

 

3、修改集群网段

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

window 安装Kubernetes kubernetes calico 安装_2d_09

 

 

修改好了如下:

window 安装Kubernetes kubernetes calico 安装_2d_10

 

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的监听端口

 

如下图:

window 安装Kubernetes kubernetes calico 安装_2d_11

 

 

二、修改好之后,kubectl启动:

 

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

 

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

  

window 安装Kubernetes kubernetes calico 安装_docker_12

 

 

 

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

 

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