内容简介:Kubeadm是Kubernetes官方提供且主推的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新。在Kubeadm的帮助下,搭建Kubernetes变得简单易行。使用Kubeadm搭建Kubernetes集群本来是件很简单的事,但由于众所周知的原因,在中国大陆是无法访问 k8s.gcr.io的。这就使我们无法按照官方的教程来创建集群。而国内的教程参差不齐,大多也无法运行成功,我也是踩了很多坑,才部署成功,故在此分享出来。这篇教程中使用的是CentOS 7.2
Kubeadm是Kubernetes官方提供且主推的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新。在Kubeadm的帮助下,搭建Kubernetes变得简单易行。
使用Kubeadm搭建Kubernetes集群本来是件很简单的事,但由于众所周知的原因,在中国大陆是无法访问 k8s.gcr.io的。这就使我们无法按照官方的教程来创建集群。而国内的教程参差不齐,大多也无法运行成功,我也是踩了很多坑,才部署成功,故在此分享出来。
准备
安装环境准备
这篇教程中使用的是CentOS 7.2系统,各机器配置如下:
IP地址 | 主机名 | CPU | 内存 | 磁盘 |
---|---|---|---|---|
10.136.157.23 | kube-node1 | 32C | 128G | 2T |
10.136.157.24 | kube-node2 | 32C | 128G | 2T |
10.136.157.25 | kube-node3 | 32C | 128G | 2T |
关闭防火墙和selinux
关闭系统的Swap
Kubernetes 1.8开始要求必须禁用Swap,如果不关闭,默认配置下kubelet将无法启动。
验证Mac地址和product_uuid是否唯一(可选)
Kubernetes要求集群中所有机器具有不同的Mac地址、产品uuid、Hostname。可以使用如下命令查看:
安装Docker
Kubernetes从1.6开始使用CRI(Container Runtime Interface)容器运行时接口。默认的容器运行时仍然是Docker,是使用kubelet中内置dockershim CRI来实现的。下面我们使用yum来安装docker:
安装kubeadm,kubelet和kubectl
部署之前,我们需要安装一下三个包:
-
kubeadm: 引导启动k8s集群的命令行工具;
-
kubelet: 在群集中所有节点上运行的核心组件, 用来执行如启动pods和containers等操作;
-
kubectl: 操作集群的命令行工具。
修改yum源
为了加快安装速度,我们需要将kubernetes的yum源修改为国内的,我这里使用了阿里云的yum源,可以通过下面的方式修改:
安装kubeadm, kubelet 和 kubectl
可以通过下面的命令看到当前可用的kubeadm/kubectl/kubelet的版本,我们这里选用的是1.13.1版本:
安装 kubeadm1.13.1, kubelet1.13.1 和 kubectl1.13.1
此时还不能启动 kubelet,先设置开机启动:
初始化Master节点
配置文件
初始化
拉取镜像
可以看到,已经成功拉取了需要的镜像
开始初始化
可以通过 kubeadm init --config kubeadm.conf 命令执行初始化操作:
开启8080端口
设置Node节点加入集群
kubeadm init 命令的输出日志中已经告知我们加入新节点的方式。如果忘记了 Master 的 Token,可以在 Master 上输入以下命令查看:
默认情况下 Token 过期是时间是24小时,如果 Token 过期以后,可以输入以下命令,生成新的 Token
获取ca证书sha256编码hash值
加入新的Node节点
启用IPV6
注意:需要在新加入的Node上启用IPV6,否则会导致 coredns 启动失败,始终处于 ContainerCreating 状态
安装网络插件
为了让Pods间可以相互通信,我们必须安装一个网络插件,并且必须在部署任何应用之前安装,CoreDNS也是在网络插件安装之后才会启动的。
网络的插件完整列表,请参考 Networking and Network Policy。
在安装之前,我们先查看一下当前Pods的状态:
如上,可以看到CoreDND的状态是Pending,就是因为我们还没有安装网络插件。
安装RBAC
安装Flannel
通过下面的命令将 /proc/sys/net/bridge/bridge-nf-call-iptables 文件的内容修改为1,用以将桥接的IPv4流量传递给iptables的链,这是一些CNI插件运行所必需的。
通过下面的命令安装Flannel插件:
通过 ifconfig 可以看到新建了一个虚拟网卡:
等待一会,我们可以在Master节点上使用kubectl get nodes命令来查看节点的状态:
安装Dashboard UI
Dashboard默认是不安装的,要想安装Dashboard,可以执行下面的命令:
注意:
如果没有特殊需求,不用解除--apiserver-host的注释
访问Dashboard UI
修改kubernetes-dashboard配置
将type: ClusterIP 修改为 type: NodePort,并保存文件。 检查 Dashboard UI 暴露的服务端口
可以看到,Dashboard UI 的服务端口是32275,协议为https,我们可以https://10.136.157.23
至此,一个单master节点的kubernetes集群就搭建好了,小伙伴们可以尝试在上面部署应用了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Elasticsearch 集群搭建和集群原理
- Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
- Spark集群环境搭建
- Zookeeper搭建集群
- FastDFS集群搭建
- Zookeeper集群环境搭建
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。