首先,我们看下官方提供的K8S集群地址:
https://github.com/kubernetes/kubernetes/releases
如图Kubernetes分为客户端和服务端
建议server端和client端分开下载,这里需要注意的是我们的master和node都是server端。
以上为官方提供的,在国内阿里云镜像同样提供了相关的下载:
https://opsx.alibaba.com/mirror
在阿里云中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
运行 yum install docker-ce,进行docker的安装。
2、Kubernetes的下载/安装
配置阿里云国内源,
注意:centos7用户还需要设置路由
安装指定版本的Kubernetes:
yum -y install kubelet-1.11.0-0
yum -y install kubeadm-1.11.0-0
yum -y install kubectl-1.11.0-0
3、Docker/Kubectl 的启动
启动Docker(并设置为开机自启动) : systemctl start docker & systemctl enable docker
查看Docker信息:docker info
启动Kubernetes(并设置为开机自启动):
我们可以使用systemctl status kubelet 查看kubelet状态;使用 tail /var/log/messages,查看日志
4、Kubeadm所需镜像的下载
首先我们测试一下与gcr.io的连接:
如上所示,在国内我们无法连接到gcr.io,无法访问到 Google 的镜像库,所以我们需要从 Docker Hub 仓库中获取相同的镜像,并且更改 TAG 让其变成与 Google 拉去镜像一致。
我们需要创建一个shell脚本,填入如下内容:
然后执行脚本进行镜像的下载:
如图,我们需要的镜像已被下载到docker中
注意:Kubernetes要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。
5、Kubernetes主节点的创建
以上准备工作完成之后我们就可以开始主节点的部署了。
首先安装 kubeadm,执行 kubeadm init --kubernetes-version=v1.11.0
注意将初始化最后一句 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,导致版本不一致。
这时我们需要删除原来的新安装对应版本即可。
我使用的是v1.11.0
配置 kubectl 认证信息:
安装flanel网络:
最后,我们需要新建一个flannel.yml文件(具体内容之后一篇给出,https://www.jianshu.com/p/bbc52c760184)。
创建完成之后,执行 kubectl create -f ./flannel.yml,之后再执行 kubectl get nodes 进行查看
注意若在执行 kubectl create -f ./flannel.yml ,之后报出如下错误,请确认端口是否开放。若未开放执行 kubectl proxy --port=端口号 &,来开发端口
6、Node节点的创建
在node节点,我们需要将之前的准本工作重复一遍(kubectl可以不安装),然后执行我们在 master节点 kubeadm 初始化完成后的 kubeadm join 语句
完成之后node节点就被成功加入集群中了。我们可以回到master节点,查看集群状况。
注意,有时我们在node节点执行 kubeadm join 命令会提示如下信息
遇到这样情况,就需要我们重新初始化 kubeadm ,先使用 kubeadm reset 重置,然后再重新初始化。
到此一个简单的Kubernetes集群就被粗略搭建成功了。
参考资料:
《每天5分钟玩转Kubernetes》
《黑马k8s集群技术》