使用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集群就搭建好了,小伙伴们可以尝试在上面部署应用了。


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

查看所有标签

猜你喜欢:

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

腾讯产品法

腾讯产品法

李立 / 浙江大学出版社 / 2018-1 / 49元

从QQ到微信,从《英雄联盟》到《王者荣耀》,腾讯公司凭借强大的产品力成为世界互联网企业中的佼佼者,其“小步快跑,试错迭代”的产品开发机制,“别让我思考”的极简主义理念,“变成白痴级用户”的用户驱动战略,都成为整个中国互联网行业竞相学习的典范。 本书向读者完整地呈现了腾讯产品设计的底层思路,阐述了设计者如何发现问题、定义问题、拆解问题的全过程,从“产品思维”出发,以需求、战略、产品设计开发与运......一起来看看 《腾讯产品法》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

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

Base64 编码/解码