iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
0
自我挑戰組

Cloud/SDN/SFC...菜鳥的學習筆記系列 第 6

Day6 菜鳥的Kubernetes紀錄-安裝Kubernetes

今天內容主要是安裝Kubernetes安裝的工具,一般會分成master和node分開使,所以會使用到兩台機器(電腦或VM都可以)。

安裝 kubeadm, kubelet, kubectl

環境

兩個ubuntu18.04(一台當master,一台當node):

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

安裝步驟

  1. 安裝軟件包以允許通過HTTPS使用存儲庫。(一般我都會習慣先做更新再安裝)ps:已安裝docker的好可以跳過1,2步驟。
apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  1. 安裝docker CE(這次使用docker-ce有指定),如果需要詳細的解說可以看第三天。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

apt-get update && apt-get install docker-ce=18.06.0~ce~3-0~ubuntu
  1. 安裝daemon
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
  1. 重啟docker
systemctl daemon-reload
systemctl restart docker

到目前為止,master和node都要。

  1. 安裝kubeadm, kubelet, kubectl
    kubeadm:用於引導cluster的命令。
    kubelet:在cluster中所有運行的組件,它的工作有啟動pod和容器之類的。
    kubectl:與cluster通信的命令行工具,也就是主控的部分,所以只需要master安裝就行。
    ps.本次安裝的這三種工具為v1.17的版本,所以記得底下有指定版本的方式
apt-get update 

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 update
#如果是node的部分則缺少kubectl(雖然安裝並不會有影響) 
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

到此安裝完所需的工具了,可以開始使用Kubernetes做事情。

指定版本的方式

#apt-get install -y kubelet=<版本號> kubeadm=<版本號> kubectl=<版本號>
apt-get install -y kubelet=1.17.3-00 kubeadm=1.17.3-00 kubectl=1.17.3-00

master和node連結

  1. 首先要先將swap關閉
free 
swapoff -a #關閉swap


swap關閉前

swap關閉後
2. 建立cluster Master

#kubeadm init #一般而言只需要這行就可以,但因為我需要用flannel所會去加入東西。
kubeadm init --pod-network-cidr=10.244.0.0/16

執行完init後,會看得到四行指令其中,底下為其中三行

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

執行flannel的yaml

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

查看是否正確

kubectl get pod -A

  1. master和node連接
    node連接到master,這部分init後會看的到,也就是剛剛沒說到的第四行
kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
#以我這邊的為例
kubeadm join 10.0.0.84:6443 --token x1syu4.vtyfd9g5ng2unog6 \
    --discovery-token-ca-cert-hash sha256:8ce515a8da9023a648cba8e00582685169caa44cba6ea8a42e1200ed503705fa

連接完後回到master輸入指令就會看到master和node了

kubectl get node

到這裡就是成功將兩者連接可以開始部屬自己想要做的服務了。
ps:如果只有一台電腦的也不用緊張,k8s有可以讓master也能執行pod的功能。

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

如果想要再拿一個連接時的方式可以使用,會再建立連接的key。

kubeadm token create --print-join-command 

上一篇
Day5 菜鳥的Kubernetes紀錄-介紹Kubernetes
下一篇
Day7 菜鳥的Kubernetes紀錄-Kubernetes建立Pod、Service、 Deployment
系列文
Cloud/SDN/SFC...菜鳥的學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言