K8S集群的简单搭建

首先,我们看下官方提供的K8S集群地址:

https://github.com/kubernetes/kubernetes/releases

K8S集群的简单搭建_第1张图片
官方在github上的发行版本

如图Kubernetes分为客户端和服务端


K8S集群的简单搭建_第2张图片
发行版的客户端和服务端

建议server端和client端分开下载,这里需要注意的是我们的master和node都是server端。

以上为官方提供的,在国内阿里云镜像同样提供了相关的下载:

https://opsx.alibaba.com/mirror


K8S集群的简单搭建_第3张图片
阿里云kubernetes镜像

在阿里云中Kubernetes的镜像仓库为:https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

下面我们开始K8S集群搭建的准备工作:

1、docker的下载/安装

我们从阿里云获取 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

K8S集群的简单搭建_第4张图片
获取docker的repo

运行 yum install docker-ce,进行docker的安装。

安装docker

2、Kubernetes的下载/安装

配置阿里云国内源,

K8S集群的简单搭建_第5张图片
kubernetes.repo

注意:centos7用户还需要设置路由

默认情况下
设置路由

安装指定版本的Kubernetes:

yum -y install kubelet-1.11.0-0

K8S集群的简单搭建_第6张图片
kubelet

yum -y install kubeadm-1.11.0-0

K8S集群的简单搭建_第7张图片
kubeadm

yum -y install kubectl-1.11.0-0

kubectl

3、Docker/Kubectl 的启动

启动Docker(并设置为开机自启动) : systemctl start docker & systemctl enable docker

启动docker

查看Docker信息:docker info

K8S集群的简单搭建_第8张图片
查看信息


启动Kubernetes(并设置为开机自启动):

Kubernetes启动

我们可以使用systemctl status kubelet 查看kubelet状态;使用 tail /var/log/messages,查看日志

K8S集群的简单搭建_第9张图片
查看kubelet信息


4、Kubeadm所需镜像的下载

首先我们测试一下与gcr.io的连接:

连接测试

如上所示,在国内我们无法连接到gcr.io,无法访问到 Google 的镜像库,所以我们需要从 Docker Hub 仓库中获取相同的镜像,并且更改 TAG 让其变成与 Google 拉去镜像一致。

我们需要创建一个shell脚本,填入如下内容:

K8S集群的简单搭建_第10张图片
镜像拉取脚本

然后执行脚本进行镜像的下载:

下载镜像

如图,我们需要的镜像已被下载到docker中

K8S集群的简单搭建_第11张图片
镜像

注意:Kubernetes要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。

关闭Swap

5、Kubernetes主节点的创建

以上准备工作完成之后我们就可以开始主节点的部署了。

首先安装 kubeadm,执行 kubeadm init --kubernetes-version=v1.11.0


K8S集群的简单搭建_第12张图片
kubeadm安装
K8S集群的简单搭建_第13张图片
安装成功

注意将初始化最后一句 kubeadm join 记录下来,后续用于将从节点加入集群。

如果你在执行语句之后报出如下错误

[ERROR SystemVerification]: unsupported docker version: 18.09.5

[ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: "1.14.1" Control plane version: "1.11.0"

错误信息

请检擦,是否在安装kubeadm、kubernetes-cni时,依赖安装了其他版本的kubectl或者kebelet,导致版本不一致。

K8S集群的简单搭建_第14张图片
K8S集群的简单搭建_第15张图片

这时我们需要删除原来的新安装对应版本即可。

K8S集群的简单搭建_第16张图片
删除目标版本
K8S集群的简单搭建_第17张图片
重新安装

我使用的是v1.11.0

Kubernetes版本

配置 kubectl 认证信息:

kubectl 认证信息

安装flanel网络:

创建flannel配置文件
K8S集群的简单搭建_第18张图片
配置文件内容
K8S集群的简单搭建_第19张图片
继续创建subnet文件
K8S集群的简单搭建_第20张图片
subnet文件内容

最后,我们需要新建一个flannel.yml文件(具体内容之后一篇给出,https://www.jianshu.com/p/bbc52c760184)。

K8S集群的简单搭建_第21张图片
flannel.yml

创建完成之后,执行 kubectl create -f ./flannel.yml,之后再执行 kubectl get nodes 进行查看

执行flannel.yml文件
成功

注意若在执行 kubectl create -f ./flannel.yml ,之后报出如下错误,请确认端口是否开放。若未开放执行 kubectl proxy --port=端口号 &,来开发端口

报错


6、Node节点的创建

在node节点,我们需要将之前的准本工作重复一遍(kubectl可以不安装),然后执行我们在 master节点 kubeadm 初始化完成后的 kubeadm join 语句

K8S集群的简单搭建_第22张图片
从节点的创建

完成之后node节点就被成功加入集群中了。我们可以回到master节点,查看集群状况。

K8S集群的简单搭建_第23张图片
云服务器信息
K8S集群的简单搭建_第24张图片
K8S集群信息

注意,有时我们在node节点执行 kubeadm join 命令会提示如下信息

K8S集群的简单搭建_第25张图片
token失效

遇到这样情况,就需要我们重新初始化 kubeadm ,先使用 kubeadm reset 重置,然后再重新初始化。

K8S集群的简单搭建_第26张图片
问题处理

到此一个简单的Kubernetes集群就被粗略搭建成功了。


参考资料:

《每天5分钟玩转Kubernetes》

《黑马k8s集群技术》

你可能感兴趣的:(K8S集群的简单搭建)