iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0
Kubernetes

Kubernetes~成為Devops工程師的必經試煉系列 第 2

Day2 安裝Kubernetes與相關工具

  • 分享至 

  • twitterImage
  •  

前言

今天將會介紹筆者本教學會使用到的Kubernate與dotnet Core工具

安裝工具

1.Minikube

2.Visual Studio Code

3.dotnet core

Minikube介紹

Minikube 是一個輕量的 Kubernetes 方案,透過在本機上建立 VM 與佈署簡易叢集容器。Minikube 可以運行在 Linux、Max OS 與 Windows 作業系統上。Minikube CLI 提供基本的叢集操作練習環境,包含啟動(start)、停止(stop)、狀態(status)與刪除(delete)。

安裝Minikube

由於筆者是使用 MacOS,所以接下來的安裝步驟,都會以Mac平台為,安裝步驟如下:

  1. BIOS要開啟VT-x或是AMD-v virtualization 功能(非Mac須確認)
  2. 安裝Minikube之前,需要安裝一個VM,本篇文章使用VirtualBox做為使用的VM
  3. 安裝Minikube
  4. 安裝Kubetl
  5. 執行你的第一個 Minikube container
  6. 將Minikube改為多虛擬機節點

在 BIOS 開啟VT-x或是AMD-v virtualization(非Mac須確認)

在BIOS選擇"Intel Virtualization Technology"(每一台電腦皆不同),並選擇 "Enabled"。
https://ithelp.ithome.com.tw/upload/images/20181016/20111882KvfOnObKJA.png

安裝 Virtual Box

VirtualBox 是開源的VM,支援 Windows, MacOS, Linux 等平台。可以從官網直接下載並安裝。
https://ithelp.ithome.com.tw/upload/images/20181016/20111882Z2K0IZSeQC.png

安裝 Kubetl

  1. 下載最新版本的指令(MacOS):
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
  1. 給予執行權限
$ chmod +x ./kubectl
  1. 將kubectl移到PATH下
$ sudo mv ./kubectl /usr/local/bin/kubectl
  1. 查看kubectl,當有顯示的下列訊息的訊息安裝完成了。
$ kubectl version
Client Verison:version.Info
....

安裝 Minikube

在安裝好Virtualbox以及 kubectl 之後,可根據 minikube 的 Github上不同的系統直接下載套件,以 MacOS 來說可以直接透過 brew 安裝套件。

$ brew cask install minikube

安裝完之後可重啟終端機,並且在終端機輸入以下指令

$ minikube start

接下來minikube會下載必要的檔案以及建立VM,大概約等10分鐘

執行你的第一個 Minikube container

啟動 minikube 之後,我們可以透過 kubectl run 在 minikube 上運行Google 提供的 hello-minikube docker image:

$ kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
deployment "hello-minikube" created

執行kubectl expose指令,讓本機端可以連到hello-minikube這個服務

$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed

我們現在已經啟動了一個Pod,但是在與它連線之前我們必須等待Pod啟動完成,可以用以下指令看狀態

$ kubectl get pod
NAME                              READY     STATUS              RESTARTS   AGE
hello-minikube-9712345789-vctvh   1/1       ContainerCreating   0          23s

約等1分鐘,可以看到已經可以連線了

$ kubectl get pod
NAME                              READY     STATUS    RESTARTS   AGE
hello-minikube-9712345789-vctvh   1/1       Running   0          16s

可以透過Curl將目前的hello-minikube service 的內容印出來

$ curl $(minikube service hello-minikube --url)
CLIENT VALUES:
client_address=192.168.99.1
command=GET
real path=/
...

測試完後,可以刪除剛剛建立的Service

$ kubectl delete service hello-minikube
service "hello-minikube" deleted

以及刪除剛剛建立的deployment

$ kubectl delete deployment hello-minikube
deployment "hello-minikube" deleted

多節點 Minikube

一般來說 Minikube 僅提供單節點功能,即透過虛擬機建立僅有一個具備 Maste/Node 節點的 Kubernetes 叢集,但為了方便快速部署與測試多節點功能,研究了一下如何將 Minikube從單節點改到多節點。

 $ minikube --profile k8s-m start
 $ kubectl -n kube-system get po -o wide
 NAME                             READY     STATUS    RESTARTS   AGE       IP               NODE
 coredns-78fcdf6894-cgwlj         1/1       Running   0          53s       10.244.0.3       k8s-m
 coredns-78fcdf6894-rwvt7         1/1       Running   0          53s       10.244.0.2       k8s-m
 ...

完成後,確認 k8s-m 節點處於 Ready 狀態:

$ kubectl get no
NAME      STATUS    ROLES     AGE       VERSION
k8s-m     Ready     master    2m        v1.12.0

確認 Master 完成後,這邊接著透過 Minikube 開啟新的節點來加入:

啟動一台新節點,注意記得加入 --node

$ minikube --profile k8s-n start --node

接著取得 Master token 與 IP

$ minikube --profile k8s-m ssh "ip -4 a"
$ minikube --profile k8s-m ssh "sudo kubeadm token list"

進入 k8s-n 然後執行接下來指令

$ minikube --profile k8s-n ssh

這邊為 k8s-n VM 內

$ sudo su -
$ TOKEN=7rzqkm.1goumlnntalpxvw0
$ kubeadm join --token ${TOKEN} ${MASTER_IP}:8443 \
    --discovery-token-unsafe-skip-ca-verification \
    --ignore-preflight-errors=Swap \
    --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests

完成後,透過 kubectl 檢查 Node 是否有加入叢集:

$ kubectl get no
NAME      STATUS    ROLES     AGE       VERSION
k8s-m    Ready     master    6m        v1.12.0
k8s-n    Ready     <none>    40s       v1.12.0

$ kubectl get csr
NAME                                                   AGE       REQUESTOR                 CONDITION
node-csr-NRwFiYgjTNUbwpFEbQMkZM0N-whAqSHmgmV43VC-S78   1m       system:bootstrap:lb06u0   Approved,Issued

叢集基本上這樣就建立好了

Visual Studio Code 與其他工具

微軟有推出 Kubernetes 專用的 VSCode 擴充套件,有很多好用的功能,目前支援 kubectl, docker, git 等多種 #k8s 命令列工具的操作介面。

  1. 安裝Visual Studio Code

  2. 安裝相關 Plugin
    https://ithelp.ithome.com.tw/upload/images/20181016/20111882U6ntjxT2L8.png

安裝 Dotnet core

之後的教學有部分將以dotnet core的Application做為架設在Kubernates的應用,這邊安裝最新的dotnet core 2.1
https://ithelp.ithome.com.tw/upload/images/20181016/201118821tsbAzDDZ6.png

參考文章

  1. Minikube Github Project

  2. 透過 Minikube 建立多虛擬機節點的 Kubernetes 叢集(不要懷疑!)

  3. [Day 2] Minikube 安裝與配置


上一篇
Day1 介紹Kubernetes
下一篇
Day3 dotnet Core Webapi on Docker
系列文
Kubernetes~成為Devops工程師的必經試煉17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言