环境、软件准备
软件安装配置
镜像准备
安装 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 调度。集群机器信息如下:
HostNameIPCPUMEMDESmaster.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 ethtool2、修改网络开启桥接网络支持,只针对(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-iptables3、关闭 SELinux,目的为了允许容器能够与本机文件系统交互。
$ setenforce 0 $ systemctl daemon-reload4、修改节点的 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