搭建K8S最新版本

准备系统环境

```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)

你可能感兴趣的:(搭建K8S最新版本)