使用Kubeadm搭建Kubernetes集群

栏目: 服务器 · 发布时间: 5年前

内容简介: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 :32275来进行访问。

至此,一个单master节点的kubernetes集群就搭建好了,小伙伴们可以尝试在上面部署应用了。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网络传播学

网络传播学

吴风 / 中国广播电视出版社 / 2004-6-1 / 22.00元

本书把网络传播置于构型与解构的双重语境中,全面而深入地梳理了网络传播的概念、发展背景与现状、传播模式、传播物征、传播学意义,并从文化学、舆论学、政治学、心理学、符号学、法学、伦理学等视角,对网络传播对于国家民族进步、社会文明与个体发展等方面所带来的影响,作了理性审视。最后,作者指出网络传播在目前的新发展中,尚存在着侵犯个人隐私权、网络著作侵权、公共信息安全、网络色情、虚假信息等诸多的问题,对于这些......一起来看看 《网络传播学》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具