五台虚拟机,配置4核CPU 4G内存
CentOs7 内核版本5.4.225
192.168.79.11 kube-install
192.168.79.12 k8s-master
192.168.79.13 k8s-node
192.168.79.14 k8s-node
192.168.79.15 k8s-node
CentOS内核升级的官方文档:http://elrepo.org/tiki/tiki-index.php
Docker官方对OverlayFS 和 内核版本的要求说明:https://docs.docker.com/storage/storagedriver/overlayfs-driver/
Docker使用OverlayFS作为存储驱动程序,同时Docker为OverlayFS提供了两个存储驱动程序:原始的overlay 和 更新、更稳定的overlay2,
但是Docker官方建议如果使用OverlayFS,请使用overlay2驱动程序而不是overlay驱动程序,因为overlay2驱动程序在inode利用率方面更为有效。
要使用overlay2驱动程序,就需要Linux内核的版本4.0或更高版本,或者使用3.10.0-514及更高版本的RHEL或CentOS
#查看内核版本
uname -r
#显示内核版本信息如下
3.10.0-693.el7.x86_64
#载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#安装ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
#安装内核 kernel
yum --enablerepo=elrepo-kernel install -y kernel-ml-devel kernel-ml
#查看已安装的内核版本
rpm -qa | grep -i kernel
#查找新安装的内核完整名称
cat /boot/grub2/grub.cfg | grep menuentry
#更改CentOS7默认的系统内核版本
#更改系统内核版本为最新安装版本
grub2-set-default 0
#查看默认启动内核是否更换成功
grub2-editenv list
#重启系统
reboot
#提示:由于升级后内核版本是往前面插入的,前面在查看新安装的内核完整名称时,我们也看到新安装的内核信息在第一行输出,所以设置启动顺序为0,即可更改为新内核版本
uname -r
#永久配置host
hostnamectl set-hostname work1
echo '''
192.168.79.11 work1
192.168.79.12 work2
192.168.79.13 work3
192.168.79.14 work4
''' >> /etc/hosts
# 网络
systemctl stop firewalld
systemctl disable firewalld
iptables -L
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sestatus
# 关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
free -m
yum install –y chrony
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd
vim /etc/chrony.conf
/**
* 注释掉默认的四个ntp服务器,因为该服务器同步时间略慢
**/
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
/**
* 格式为:server 服务器ip地址 iburst
* 添加阿里云的ntp服务器,可以多写几个ntp服务器,防止第一个服务器宕机,备用的其他ntp服务器可以继续进行时间同步
* ip地址为服务器ip地址,iburst代表的是快速同步时间
**/
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
systemctl restart chronyd
systemctl status chronyd
#编写kubernetes.conf配置
vim /etc/sysctl.d/kubernetes.conf
# 填写如下内容
# 开启ipv4的过滤规则
net.bridge.bridge-nf-call-iptables=1
# 开启iptables中ipv6的过滤规则
net.bridge.bridge-nf-call-ip6tables=1
# 开启服务器的路由转发功能
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
# 禁止使用swap 空间,只有当系统OOM 时才允许使用它
vm.swappiness=0
# 不检查物理内存是否够用
vm.overcommit_memory=1
# 开启OOM
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
# 禁止ipv6
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
#执行命令,使其配置文件生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/kubernetes.conf
# 可以看到最后一行提示为:sysctl: cannot stat /proc/sys/net/netfilter/nf_conntrack_max: No such file or directory,这是因为我们当前3.10版本的CentOS内核中,不存在该文件,在后面操作中,我将会升级CentOS内核,升级之后的CentOS内核将包含该文件,所以这里我们暂时忽略该提示
#开启kube-proxy的ipvs前置条件
#从kubernetes的1.8版本开始,kube-proxy引入了ipvs模式,ipvs模式与iptables同样基于Netfilter,但是ipvs模式采用的是hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能
//1、安装ipvsadm 和 ipset
yum -y install ipvsadm ipset
//2、编辑ipvs.modules配置文件,使其永久生效
vim /etc/sysconfig/modules/ipvs.modules
//3、填写如下内容
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
//4、设置文件权限
chmod 755 /etc/sysconfig/modules/ipvs.modules
//5、查看是否已经正确加载所需的内核模块
bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
在网上找到教程安装K8S需要配置ipvs功能,但是在进行配置时会报错modprobe: FATAL: Module nf_conntrack_ipv4 not found.
这是因为使用了高内核,较如博主就是使用了5.2的内核,一般教程都是3.2的内核。在高版本内核已经把nf_conntrack_ipv4替换为nf_conntrack了
# docker卸载
yum remove docker-ce
rm -rf /var/lib/docker
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 配置源
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum -y install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
# docker 一键安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh
# 特定版
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 例如:
##1、查询18.09版的docker-ce和docker-ce-cli
yum list available docker-ce* --showduplicates|grep 18.09
##2、安装指定版本的docker-ce和docker-ce-cli
yum install -y docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io
# 最新版
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 检查
systemctl enable docker && systemctl start docker
docker version
docker info
sudo docker run hello-world
# 配置国内镜像
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://m0p0xxqj.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
#创建一个docker.service.d目录,用于存放docker的配置文件
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
# 升级
sudo yum install docker-ce docker-ce-cli containerd.io
# docker compose 安装
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
#测试安装结果
docker-compose --version
kube-install是k8s一键安装脚本,支持高度可用的多个kubernetes集群可以在二进制模式下一键离线安装,也可以计划安装、添加kubernets节点、删除kubernete节点、销毁kubernetesmaster、重建kubernetes-master和卸载集群。
(无需在目标主机上安装任何软件。只需使用空主机即可脱机部署高度可用的kubernetes集群!)
你可以从 https://github.com/cloudnativer/kube-install/releases 这里下载kube-install-*.tgz软件包。
举例,下载kube-install-allinone-v0.8.0.tgz软件包进行安装:
cd /root/
curl -O https://github.com/cloudnativer/kube-install/releases/download/v0.8.0/kube-install-allinone-v0.8.0.tgz
tar -zxvf kube-install-allinone-v0.8.0.tgz
cd /root/kube-install/
注意:如果你本地的网络环境不是太好的话,建议你使用支持断点续传的下载软件进行软件包下载,这样可以获得更好的下载体验。
如果你有四台服务器,k8s-master安装在三台服务器(192.168.1.11、192.168.1.12、192.168.1.13)上,k8s-node安装在四台服务器(192.168.1.11、192.168.1.12、192.168.1.13、192.168.1.14)上。服务器的操作系统是纯净的CentOS Linux或RHEL(RedHat Enterprise Linux),具体如下表所示:
IP地址 需要安装的组件 操作系统版本 root密码
192.168.1.11 k8s-master,k8s-node,kube-install CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.12 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.13 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.14 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
注意:这里使用192.168.1.11作为kube-install源安装机。事实上,您可以将任何主机(包括kubernetes集群之外的任何主机)用来作为kube-install源安装机!
初始化系统环境
首先你需要使用root用户对kube-install源安装机本地环境进行初始化操作,进入解压后的软件目录执行kube-install -init
命令:
cd /root/kube-install/
./kube-install -init -ostype "centos7"
注意:kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做初始化操作的时候,请确保-ostype参数设置正确。
运行kube-install的Web管理服务
然后,执行systemctl start kube-install命令来运行kube-install的Web管理平台服务。kube-install的Web管理平台具备SSH打通、定时安装部署、Node扩容、Master修复、集群卸载等强大的功能,你可以在Web管理平台上获得更好的安装体验。
# systemctl start kube-install.service
# systemctl status kube-install.service
● kube-install.service - kube-install One click fast installation of highly available kubernetes cluster.
Loaded: loaded (/etc/systemd/system/kube-install.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-08-20 14:30:55 CST; 21min ago
Docs: https://cloudnativer.github.io/
Main PID: 2768 (kube-install)
CGroup: /system.slice/kube-install.service
└─2768 /go/src/kube-install/kube-install -daemon
...
此时,你就可以使用网页浏览器打开http://kube-install源安装机IP:9080,访问kube-install的Web管理平台了。使用用户名 admin 和默认密码 CloudNativeR 登录!(你可以后期通过web平台修改密码)
注意:kube-install的Web管理平台服务默认监听TCP 9080。如果你想修改这个监听地址的话,可以通过修改/etc/systemd/system/kube-install.service文件中的kube-install -daemon -listen ip:port参数来进行设置
Run as a systemd service
You can run Kube-Install in systemd service mode.
Prepare /etc/systemd/system/kube-install.service file as follows, here is a sample file for reference.
[Unit]
Description=kube-install One click fast installation of highly available kubernetes cluster.
Documentation=https://cloudnativer.github.io/
After=sshd.service
Requires=sshd.service
[Service]
Environment="USER=root"
ExecStart=/var/lib/kube-install/kube-install -daemon -listen 0.0.0.0:9080
User=root
PrivateTmp=true
LimitNOFILE=65536
TimeoutStartSec=5
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
#Notice: Please fill in the actual full path of kube-install binary file after ExecStart= parameter. Kube-install web service listens to TCP 9080 by default. If you want to modify the listening address, you can set it by modifying the kube-install -daemon -listen ip:port parameter in the /etc/systemd/system/kube-install.service file.
#Start the service
#Start the service using the systemctl start kube-install command:
systemctl start kube-install.service
systemctl status kube-install.service
● kube-install.service - kube-install One click fast installation of highly available kubernetes cluster.
Loaded: loaded (/etc/systemd/system/kube-install.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-08-20 14:30:55 CST; 21min ago
Docs: https://cloudnativer.github.io/
Main PID: 2768 (kube-install)
CGroup: /system.slice/kube-install.service
└─2768 /go/src/kube-install/kube-install -daemon
#Set the service startup
To set the service startup, you can execute the following commands:
# systemctl enable kube-install.service
快速安装部署kubernetes集群
然后,点击Web界面右上角的的Install Kubernetes按钮开始kubernetes集群的安装 我这里已经安装
注意:在你开始给目标主机安装kubernetes集群之前,请先打通kube-install源安装机本地到目标主机的SSH免密通道。 你可以自己手工打通到目标主机的SSH通道,也可以点击右上角的Open SSH Channel of Host按钮来进行打通 详见https://github.com/cloudnativer/kube-install/blob/master/docs/webssh0.8.md
在弹出的安装表单窗口中填写好安装所需的参数信息:
请选择好你需要安装的Kubernetes版本,目前kube-install支持v1.17~1.24版本的Kubernetes安装部署,其他版本的Kubernete暂未进行验证。
请选择好你需要安装的CNI插件,目前kube-install支持Flannel、Calico、Kube-router、Weave、Cilium等CNI插件类型。如果需要安装Cilium,请将Linux内核升级到4.9或以上版本。
请选择好你的操作系统环境。由于低版本的Centos 7和RHEL 7可能缺少内核模块,kube-install对Centos 7和RHEL 7操作系统内核的提供了自动升级到4.19的功能,你可以选择使用此功能,也可能自己手工优化操作系统内核。
注意:如果不设置定时安装的话,默认为立即开始安装。你如果想进行定时安装,也可以在下方的选择定时安装的日期与时间。
除了可以使用Web平台安装kubernetes集群外,你还可以通过kube-install的命令行来安装kubernetes集群,kube-install的命令行使用起来比较简单方便。
初始化系统环境
首先你需要使用root用户对kube-install源安装机本地环境进行初始化操作,进入解压后的软件目录执行kube-install -init
命令:
# cd /root/kube-install/
# ./kube-install -init -ostype "centos7"
注意:kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做初始化操作的时候,请确保-ostype参数设置正确。
打通到目标主机的SSH通道
在你开始给目标主机安装kubernetes集群之前,请先打通kube-install源安装机本地到目标主机的SSH免密通道。 你可以自己手工打通到目标主机的SSH通道,也可以通过kube-install -exec sshcontrol
命令来打通:
cd /root/kube-install/
./kube-install -exec sshcontrol -sship "192.168.1.11,192.168.1.12,192.168.1.13,192.168.1.14" -sshpass "cloudnativer"
你也可以通过kube-install的Web管理平台来打通到目标主机的SSH通道
一键安装部署kubernetes集群
在kube-install源安装机上使用root用户执行下面这条命令即可:
# cd /root/kube-install/
# ./kube-install -exec install -master "192.168.1.11,192.168.1.12,192.168.1.13" -node "192.168.1.11,192.168.1.12,192.168.1.13,192.168.1.14" -k8sver "1.22" -ostype "centos7" -label "192168001011"
注意:
kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做安装部署操作的时候,请确保-ostype参数设置正确。由于低版本的centos7和redhat7可能缺少内核模块,kube-install对centos7和rhel7操作系统内核的提供了自动升级到4.19的功能,你可以选择-upgradekernel参数使用此功能,也可能自己手工优化操作系统内核。
请选择好你需要安装的CNI插件,目前kube-install支持Flannel、Calico、Kube-router、Weave、Cilium等CNI插件类型。如果需要安装“Cilium”,请将Linux内核升级到4.9或以上版本。
另外,如果你需要自定义制定Kubernetes集群安装在目标主机上的目录路径的话,可以带上-softdir参数来设置。
4.4 登录kubernetes dashboard界面
通过查看loginkey.txt文件可以获取kube-dashboard的登录地址和密钥
cat /opt/kube-install/loginkey.txt
如下面的截图所示为kube-dashboard的登录地址和密钥:
Kube-install不仅可以很方便的安装单机和高可用的kubernetes集群,还可以支持k8s-node的扩容与销毁、k8s-master的销毁与修复、kubernetes集群的卸载等。
举例,现在需要给第[2]章节中安装好的kubernetets集群,增加2个k8s-node节点(192.168.1.15 and 192.168.1.16),相关信息如下:
IP地址 需要安装的组件 操作系统版本 root密码
192.168.1.11 k8s-master,k8s-node,kube-install CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.12 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.13 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.14 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.15 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.16 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
在kube-install源主机上使用root用户执行如下命令:
kube-install -exec addnode -node "192.168.1.15,192.168.1.16" -k8sver "1.22" -ostype "centos7" -label "192168001011"
注意:kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做安装部署操作的时候,请确保-ostype参数设置正确。
另外,如果你需要自定义制定Kubernetes集群安装在目标主机上的目录路径的话,可以带上-softdir参数来设置。
安装完毕之后的部署架构如下图所示:
kube-install-arch
除了使用kube-install -exec addnode命令进行k8s-node节点扩容外,你也同样可以使用kube-install的Web管理平台来对k8s-node节点进行扩容,点击“Add Node”按钮填写表单即可完成k8s-node的扩容。点击这里可以查看使用kube-install的Web管理平台来扩容k8s-node节点的方法。
kube-dashboard
你可以点击“Enable Terminal”和“Web Terminal”来使用web终端管理k8s-node服务器。
点击web控制台
会跳转到以下登录链接
https://192.168.79.15:32767/#/login
认证通过后进入dashboard管理界面
在master节点上操作
#创建用户
$kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
$kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 获取用户Token
$kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
[root@work2 kube-install]# kubectl create serviceaccount dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
[root@work2 kube-install]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
[root@work2 kube-install]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
Name: kubernetes-dashboard-admin
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: kubernetes-dashboard-admin
kubernetes.io/service-account.uid: f8e07aac-cb21-4b05-a72a-2859df5ff725
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 2069 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlBrUVVNR3Q0dzJSalBhLUtpMXNyMkY4YU9qYllsVVVjaWIwbzZhanpyVzAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImY4ZTA3YWFjLWNiMjEtNGIwNS1hNzJhLTI4NTlkZjVmZjcyNSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiJ9.nz2CBemRGF_olJUFLI6V-N9k20Drh3XQJ5AXPt5XdEkrBl187KBDhagmALBsHjglafxhVtoquXWt9yxXFOz_9MDqLeQOrZh9OJpIkm4YikkOVXx-hYqLNLslcJ71k4TSMn1BD3c-B44IGuy433wCAKNQUW3bX_dHiz8JY9Q_IVmwRhwl1S7uzVvt1IYGOLlaZhkhAo9HIOpkCa2KBd6mxBBlMeT5JHj73FJuZVyc6bGpg9C0laXet6O76OQWd0xAjuetIDvjUWkUudgSk2in6-ZNp9FgNknobcdCQ5EdtpfazH_E8D4TMM1pXCKXaAx-l8Mi8G_0Xg_IASaUFXv7Jw
# 创建用户
$kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
$kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 获取用户Token
$kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
#获取token文件名dashboard-admin-token-dc7tz
$kubectl get secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
#将上一步获取到的token文件名替换到这里
$DASH_TOKEN=$(kubectl get secret -n kube-system dashboard-admin-token-dc7tz -o jsonpath={.data.token}|base64 -d)
# 生成dashboard-admin.kubeconfig配置文件
$kubectl config set-cluster kubernetes \
--certificate-authority=/opt/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://192.168.91.132:6443 \
--kubeconfig=dashboard-admin.kubeconfig
$kubectl config set-credentials dashboard-admin \
--token=$DASH_TOKEN \
--kubeconfig=dashboard-admin.kubeconfig
$kubectl config set-context dashboard-admin@kubernetes \
--cluster=kubernetes \
--user=dashboard-admin \
--kubeconfig=dashboard-admin.kubeconfig
$kubectl config use-context dashboard-admin@kubernetes --kubeconfig=dashboard-admin.kubeconfig
https://docs.docker.com/engine/install/centos/
https://github.com/cloudnativer/kube-install
https://github.com/cloudnativer/kube-install/blob/master/docs/webinstall0.7-zh.md
https://github.com/cloudnativer/kube-install/blob/master/docs/parameters0.8.md
https://github.com/cloudnativer/kube-install/blob/master/docs/architecture0.8.md