使用 kubeadm 在 CentOS 7 搭建 Kubernetes 集群

环境、软件准备

软件安装配置

镜像准备

安装 Docker

安装并配置 Kubernetes 组件

初始化 Master

安装 Flannel 网络组件

部署 Node 节点

安装 Kubernetes Dashboard

Dashboard 集成 Heapster

安装过程问题总结

1、kubeadm 介绍

Kubernetes 是 Google 开源的基于 Docker 的容器集群管理系统,通过 yaml 语言写的配置文件,简单快速的就能自动部署好应用环境,支持应用横向扩展,并且可以组织、编排、管理和迁移这些容器化的应用。Kubeadm 是一个可以快速帮助我们创建稳定集群服务的工具,通过它,我们可以在虚拟机、实体机或者云端快速部署一个高可用的集群服务。

2、环境、软件准备

安装之前,先介绍下 Kubeadm 安装 kubernetes 需要的一些基本硬件要求。

本次演示我准备了两台系统为 CentOS Linux 7 (Core) 的虚拟机,一台作为 Master,一台作为 Node,默认 Master 机器不参与 Pod 调度。集群机器信息如下:

HostNameIPCPUMEMDES
master.localdomain   10.236.65.125   2 Core   2G   k8s master 节点  
node0.localdomain   10.236.65.135   2 Core   2G   应用节点  

此外,我们还需要做一些初始化工作,下边安装过程中遇到坑的时候也会提到。

1、安装 ebtables ethtool,否则后边执行 kubeadm init 的时候会报错。

$ yum install ebtables ethtool

2、修改网络开启桥接网络支持,只针对(RHEL/CentOS 7)系统。

$ cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system 或者 $ vim /usr/lib/sysctl.d/00-system.conf # 将 net.bridge.bridge-nf-call-iptables 值改成 1 # 然后修改当前内核状态 $ echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

3、关闭 SELinux,目的为了允许容器能够与本机文件系统交互。

$ setenforce 0 $ systemctl daemon-reload

4、修改节点的 hostname,因为 kubernetes 是根据 hostname 来标示各节点的。

# Master 节点 $ echo "master.localdomain" > /etc/hostname $ echo "10.236.65.125 master.localdomain" >> /etc/hosts $ sysctl kernel.hostname=master.localdomain # 不重启情况下使内核修改生效

3、软件安装配置

我们知道 kubernetes 环境底层是依赖 Docker 的,所以这里软件安装包括了 Docker 安装, kubelet、kubeadm、kubectl 组件安装,以及一些初始化配置工作。

Master 和 Node 节点由于分工不一样,所以安装的服务不同,最终安装完毕,Master 和 Node 启动的核心服务分别如下:

Master 节点Node 节点
etcd-master   kube-flannel  
kube-apiserver   kube-proxy  
kube-controller-manager   other apps  
kube-dns      
kube-flannel      
kube-proxy      
kube-scheduler      

3.1 镜像准备

kubernetes 服务启动依赖很多镜像,但是这些镜像要是在国内没有翻墙的话,是下载不下来的。这里我们可以去 Docker Hub 下载指定版本的镜像替代,下载完成后,通过 docker tag ... 命令修改成指定名称的镜像即可。

本次演示 kubernetes 所依赖的各个镜像列表如下:

Image NameVersionDes ( * 必需)
gcr.io/google_containers/kube-scheduler-amd64   v1.6.2   *  
gcr.io/google_containers/kube-proxy-amd64   v1.6.2   *  
gcr.io/google_containers/kube-controller-manager-amd64   v1.6.2   *  
gcr.io/google_containers/kube-apiserver-amd64   v1.6.2   *  
gcr.io/google_containers/etcd-amd64   3.0.17   *  
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64   1.14.1   *  
gcr.io/google_containers/k8s-dns-kube-dns-amd64   1.14.1   *  
gcr.io/google_containers/k8s-dns-sidecar-amd64   1.14.1   *  
gcr.io/google_containers/pause-amd64   3.0   *  
gcr.io/google_containers/flannel   v0.7.1-amd64   *  
gcr.io/google_containers/kubernetes-dashboard-amd64   v1.6.0      
gcr.io/google_containers/heapster-influxdb-amd64   v1.3.3      
gcr.io/google_containers/heapster-grafana-amd64   v4.4.3      
gcr.io/google_containers/heapster-amd64   v1.4.0      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ccf09e871e52b67aa2845e9bffbb28ef.html