准备系统环境
```bash
192.168.106.101 centos7.6 docker:18.09.6 master
192.168.106.102 centos7.6 docker:18.09.6 node1
192.168.106.103 centos7.6 docker:18.09.6 node2
```
三台服务器,请提前关闭防火墙和selinux,并安装好docker
```bash
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
```
配置kubelet仓库
```bash
cat>>/etc/yum.repos.d/kubrenetes.repo< [kubernetes] name=Kubernetes Repo baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg EOF ``` #### 所有节点执行 **安装 kubelet、kubeadm、kubectl** ```bash yum install -y kubelet kubeadm kubectl systemctl enable kubelet && systemctl start kubelet ``` #### 所有节点全部执行 **安装镜像**开始最重要的步骤,也是比较容易出现错误的地方 ```bash docker pull kulelehu/kube-apiserver:v1.18.6 docker pull kulelehu/kube-controller-manager:v1.18.6 docker pull kulelehu/kube-scheduler:v1.18.6 docker pull kulelehu/kube-proxy:v1.18.6 docker pull kulelehu/pause:3.2 docker pull kulelehu/etcd:3.4.3-0 docker pull kulelehu/coredns:1.6.7 docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200817170000635.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU0NjI4Mg==,size_16,color_FFFFFF,t_70#pic_center) 下载完镜像如图所示,我更新了镜像的标签名称 master节点初始化 ```bash kubeadm init --kubernetes-version=v1.18.6 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap ``` kubernetes-version: 当前k8s版本 pod-network-cidr: 用于指定Pod的网络范围。该参数使用依赖于使用的网络方案,本文将使用经典的flannel网络方案。 service-cidr: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818102252902.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU0NjI4Mg==,size_16,color_FFFFFF,t_70#pic_center) ```bash kubeadm join 192.168.106.101:6443 --token 6g1nfc.ghwr1gywf4dma6ov \ --discovery-token-ca-cert-hash sha256:a2871d8abd46b7858d733b5b0ce49c7049d881dd87f4a51d818d7e82b8929e37 ``` 验证 kube-apiserve:6443端口启动正常 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818102404180.png#pic_center) **镜像版本错误** 执行此命令有可能会报错,和你的镜像版本,以及系统配置有关系具体看你的错误信息更新成正确的镜像和参数配置 下· ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200817170616687.png#pic_center) 解决办法: docker search kube-apiserver:v1.18.7 #查找仓库中这个版本的镜像 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200817170935119.png#pic_center) 其他问题也如同类似解决 **系统参数设置问题** **永久配置** ```bash cat /etc/sysctl.conf net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 ``` sysctl -p #配置生效 **临时办法** ```bash echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables ``` **重新初始化:** ```bash rm -rf /etc/kubernetes/ rm -rf /var/lib/kubelet/ rm -rf /var/lib/etcd/* ``` 然后执行刚才的初始化命令 无报错说明初始化成功 master节点获取token kubeadm token list ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200817181021938.png#pic_center) 安装网络插件 ```bash kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818113341970.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU0NjI4Mg==,size_16,color_FFFFFF,t_70#pic_center) kubeadm join --discovery-token 6g1nfc.ghwr1gywf4dma6ov --discovery-token-unsafe-skip-ca-verification 192.168.106.101:6443 将node节点加入master集群 node1和node2机器分别执行 ```bash kubeadm join --discovery-token 6g1nfc.ghwr1gywf4dma6ov --discovery-token-unsafe-skip-ca-verification 192.168.106.101:6443 ``` 192.168.106.101:6443 为master节点的ip:端口 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200817181550782.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU0NjI4Mg==,size_16,color_FFFFFF,t_70#pic_center) **遇到节点报错 需要初始化下节点** ```bash kubeadm reset ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818152217297.png#pic_center) master节点验证:kubectl get nodes ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818152402701.png#pic_center) 可以看到 node01和node02 **踩坑提示** ```bash masterj节点和node节点镜像名称不一致会导致node节点容器起不来,我在master节点上修改镜像的标签,在node节点也需要修改标签 docker image tag kulelehu/pause:3.2 k8s.gcr.io/pause:3.2 docker image tag kulelehu/kube-proxy:v1.18.6 k8s.gcr.io/kube-proxy:v1.18.6 ``` 修改标签后再次加入master节点正常启动 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818165130720.png#pic_center)