iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0

2021 IT鐵人賽 DAY3

今天要來安裝kubernetes,在k8s中有分為master和worker,因此一般來說會有至少兩台機器在叢集中,但如果只有一台機器也沒關係,後面會有辦法解決的:D。

安裝環境

兩台ubuntu 18.04的機器(VM)

  • 2 GB or more of RAM per machine (any less will leave little room for your apps)
  • 2 CPUs or more

安裝步驟

:::info
:bulb: Hint: 以下指令在master和worker上都需執行
:::

1.更新apt並安裝軟體包用來通過HTTPS獲取存儲庫(在昨天Docker安裝步驟中已經安裝)

apt-get update && apt-get install -y apt-transport-https curl

2.安裝kubelet、kubectl、kubeadm(在此處將版本指定為1.18版,這樣後續的文章分享中才不會因版本問題而導致失敗,各位可以自行指定版本)

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get install -y kubelet=1.18.20-00 kubeadm=1.18.20-00 kubectl=1.18.20-00
apt-mark hold kubelet=1.18.20-00 kubeadm=1.18.20-00 kubectl=1.18.20-00

3.Docker連結操縱

cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker

4.關閉swap

free 
swapoff -a 

這樣就將kubernetes的環境建置好囉!再來做的就是啟動你的k8s叢集。

啟動叢集

:::info
:bulb: Hint: 以下指令在master上執行
:::

1.主節點(master)啟動

kubeadm init  --pod-network-cidr=10.244.0.0/16
# 以下指令會在叢集啟動後提醒你要執行
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

2.安裝flannel

要注意以下flannel是for 1.18版本的,如使用其他版本需做調整

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3.生成Join叢集Token使worker能加入叢集

在master啟動後,也會印出你的join叢集的token,worker使用該token便可加入叢集,但往後如遺失token,可以用以下指令再獲取token。

kubeadm token create --print-join-command

所產生的join token格式如下:

kubeadm join {master_ip}:6443 --token {token}     --discovery-token-ca-cert-hash sha256:{sha256 hash}

以上master的配置就暫時結束了。

4.worker加入master叢集

:::info
:bulb: Hint: 以下指令在worker上執行
:::

將在步驟3所獲取的join token複製在worker上面執行就可以惹。

kubeadm join {master_ip}:6443 --token {token}     --discovery-token-ca-cert-hash sha256:{sha256 hash}

之後便可以到master上面查看worker是否成功加入叢集

kubectl get node

應該會有類似如下的輸出

NAME      STATUS   ROLES    AGE   VERSION
{master}   Ready    master   30d   v1.18.0
{worker}   Ready    <none>   30d   v1.18.0

那如果沒有兩台機器的也不用擔心,可以在使用以下指令

kubectl taint nodes --all node-role.kubernetes.io/master-

這樣你就有一個單節點的叢集可以使用囉!

又一天:)


上一篇
DAY2 安裝 Docker
下一篇
DAY4 Kubernetes叢集資源監-Prometheus 前言
系列文
從雲端開始的菜鳥任務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言