30分鐘搭建一個單主 Kubernetes 集羣

本文安裝的 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
  • 主機名設置能夠經過命令,例如設置 master-01 主機名:hostnamectl set-hostname master-01,你能夠經過 cat /etc/redhat-release 進行檢查。且注意,不要使用 localhost 做爲主機名。

除此以外,爲了不錯誤,機器須要知足如下要求:CPU 內核數量不能低於 2,不支持 arm 架構,你能夠經過執行 lscpu 命令進行覈對。segmentfault

準備工做作完以後,咱們就開始正式安裝吧~瀏覽器

開始安裝

  • master-01 節點機器初始化
# 只在 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
  • worker-01 節點機器初始化

上一步已經將 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
  • 而後咱們去 Master 節點上面檢查一下是否接入進來了
kubectl get nodes -o wide

k8s-nodes

看到這樣的結果呢,其實咱們的Kubernetes集羣就已經搭建好了,只不過,咱們的直觀映像是這應該有個操做界面吧,否則我怎麼玩呀?

對的,咱們就開始來安裝Web UI界面吧~

我並無安裝官方的 UI 界面,而是安裝了一個社區我以爲還挺不錯的一個界面。可是,我仍是把官方界面的截圖放一下給你們看看,後面我就開始安裝我比較喜歡的 kuboard 界面了。

官方的UI長這個樣子:

ui-dashboard

我選擇 kuboardhttps://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,以個人域名爲例:

hosts

而後我經過本地瀏覽器訪問 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筆記, 歡迎關注!

file

相關文章
相關標籤/搜索