本文安装的 Kubernets 版本为 v1.17.2node
考虑到后面要在上面跑不少东西,因此我我经过虚拟机建立了四台 CentOS 7.6 版本的机器,一台作Master节点,其它三台作Worker节点。具体详情以下:nginx
主机名 | IP地址 |
---|---|
master-01 | 172.16.60.110 |
worker-01 | 172.16.60.121 |
worker-02 | 172.16.60.122 |
worker-02 | 172.16.60.122 |
须要注意的是,四台机器之间可以相互 Ping 通,且时间同步、主机名不能重复。shell
ntpdate -u cn.ntp.org.cn
hostnamectl set-hostname master-01
,你能够经过 cat /etc/redhat-release
进行检查。且注意,不要使用 localhost 做为主机名。除此以外,为了不错误,机器须要知足如下要求:CPU 内核数量不能低于 2,不支持 arm 架构,你能够经过执行 lscpu
命令进行核对。segmentfault
准备工做作完以后,咱们就开始正式安装吧~浏览器
# 只在 master 节点执行 # 替换 172.16.60.110 为 master 节点实际 IP(请使用内网 IP) # export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,若是要继续安装过程,请从新执行此处的 export 命令 export MASTER_IP=172.16.60.110 # 替换 k8s.jared-says.cn 为 您想要的 dnsName export APISERVER_NAME=k8s.jared-says.cn # Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 建立,事先并不存在于您的物理网络中 export POD_SUBNET=10.100.0.1/16 echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts curl -sSL https://kuboard.cn/install-script/v1.17.x/init_master.sh | sh -s 1.17.2
执行完以后,咱们来检查一下对 master-01 执行的结果:bash
# 执行以下命令,等待 3-10 分钟,直到全部的容器组处于 Running 状态 watch kubectl get pod -n kube-system -o wide # 查看 master 节点初始化结果 kubectl get nodes -o wide
上一步已经将 master-01 节点初始化好了,所以,咱们要将三台Worker节点都接入到Master节点。那么咱们须要得到一个相似密钥的东西,得到接入的权限。怎么获取呢?只须要在上一步的 master-01 节点中执行以下命令就行了:网络
kubeadm token create --print-join-command
你可能会获得以下的结果,注意,这个结果咱们立刻就会用到哦~架构
# kubeadm token create 命令的输出 kubeadm join k8s.jared-says.cn:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
另外,该 token 的有效时间为 2 个小时,2小时内,您可使用此 token 初始化任意数量的 worker 节点。app
接下里,就依次! 依次! 依次! 在三台 Worker 节点机器上执行上面获得的命令:dom
# 替换 172.16.60.110 为 master 节点的内网 IP export MASTER_IP=172.16.60.110 # 替换 k8s.jared-says.cn 为初始化 master 节点时所使用的 APISERVER_NAME export APISERVER_NAME=k8s.jared-says.cn echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts kubeadm join k8s.jared-says.cn:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
kubectl get nodes -o wide
看到这样的结果呢,其实咱们的Kubernetes集群就已经搭建好了,只不过,咱们的直观映像是这应该有个操做界面吧,否则我怎么玩呀?
对的,咱们就开始来安装Web UI界面吧~
我并无安装官方的 UI 界面,而是安装了一个社区我以为还挺不错的一个界面。可是,我仍是把官方界面的截图放一下给你们看看,后面我就开始安装我比较喜欢的 kuboard 界面了。
官方的UI长这个样子:
我选择 kuboard:https://kuboard.cn/
首先为了可以让虚拟机里面的Kubernetes 可以被本地电脑访问到,咱们须要安装一个叫 Ingress Controller 的东西,这是 Kubernetes 流量的入口。在 Master 节点执行这条命令便可安装:
kubectl apply -f https://kuboard.cn/install-script/v1.17.x/nginx-ingress.yaml
若是你不想要了,你能够随时卸载,就是这么任性,这么简单:
kubectl delete -f https://kuboard.cn/install-script/v1.17.x/nginx-ingress.yaml
而后,咱们须要在本地电脑(/etc/hosts文件,Windows读者本身去翻翻在哪里该,我不太记得了:-P)上面添加一条DNS解析记录,你能够将域名 ..yourdomain.com 解析到 worker 节点任意一个IP,以个人域名为例:
而后我经过本地浏览器访问 dashboard.k8s.jared-says.cn,会获得 404 界面,这是正常的,由于咱们还没部署 UI。安装 Kuboard UI很简单,和官方UI安装方式同样,只须要在Master节点执行以下命令便可:
kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.6/metrics-server.yaml
固然,你随时想卸载也能够,依然任性、简单:
kubectl delete -f https://kuboard.cn/install-script/kuboard.yaml kubectl delete -f https://addons.kuboard.cn/metrics-server/0.3.6/metrics-server.yaml
好了,咱们检查一下UI安装状况:
kubectl get pods -l k8s.eip.work/name=kuboard -n kube-system
若是获得以下结果:
你就能够经过本地浏览器访问:http://任意一个Worker节点的IP...:32567/ 查看界面了。
这里须要咱们输入TOKEN 认证,在哪里获取呢?
只须要在 Master 节点执行以下命令便可:
kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d
你会获得这样的结果:
复制红框中的 Token 值就行了。以后就能够进入 Kubernetes 管理界面啦~
能够开始尽情的折腾了。
文章首发在公众号:抠腚Coding笔记, 欢迎关注!