如何在 Mac 上配置 Kubernetes

Liam Zheng發表於2019-07-11

Mac 使用者可使用 MicroK8s 執行 Kubernetes 環境,進而開發、測試應用。通過下面的步驟可輕鬆搭建此環境。

MicroK8s 是一個 Ubuntu 推出的一個本地的 Kubernetes 版本。它是一個輕量級的 snap 應用,可安裝到 PC 上作為一個單節點叢集使用。儘管 MicroK8s 僅針對 Linux 構建,但是也可以在 Mac 上啟動 Ubuntu VM 來實現。

MicroK8s 可在 Ubuntu 和任意支援 snap 的 OS 上執行全部原生的 K8s 服務。這對於開發應用,建立簡單的 K8s 叢集和本地微服務開發非常有幫助,所有的開發工作最終都還是需要部署的。

MicroK8s 提供另一個級別的可靠性因為它提供了與當前 Kubernetes(以下簡稱 Kubernetes 為 K8s)版本一致的開發環境。 在最新的上游 K8s 釋出後的一週內,在 Ubuntu 上即可使用。

在 Mac 上配置 Kubernetes

K8s 和 MicroK8s 都需要一個 Linux 核心來工作,因此二者都需要 Ubuntu 環境。Mac 使用者可使用 Multipass,此工具被設計為方便使用者在 Mac、Windows、Linux 上開啟 Ubuntu VM(虛擬)環境。 

下面的教程將介紹在 Mac 上配置 Multipass 和執行 K8s。

步驟1:使用 Multipass 為 Mac 安裝一個 VM

最新的 Multipass 的程式包可在 GitHub 上找到,雙擊 .pkg 即可安裝。用 MicroK8s 來啟動一個 VM:

multipass launch --name microk8s-vm --mem 4G --disk 40G
multipass exec microk8s-vm -- sudo snap install microk8s --classic
multipass exec microk8s-vm -- sudo iptables -P FORWARD ACCEPT

確保為主機保留足夠的資源。上述命令表示我們建立了一個名字為 microk8s-vm 的 VM,分配了 4GB 記憶體和 40GB 硬碟。

使用以下命令來檢視 VM 分配的 IP 地址:(記一下下面的 IP,我們將從此開始)

multipass list
Name         State IPv4            Release
microk8s-vm  RUNNING 192.168.64.1   Ubuntu 18.04 LTS

步驟2:在 VM 上與 MicroK8s 互動

可使用以下 3 種方式:

命令列,用 Multipass 的 shell 提示符:

multipass shell microk8s-vm                                                                                     

multipass exec 來執行一個命令(輸入後無提示):

multipass exec microk8s-vm -- /snap/bin/microk8s.status                             

呼叫執行在 VM 的 K8s API 伺服器,這裡使用 MicroK8s 的 kubeconfig 檔案和一個本地的安裝的 kubectl 來訪問 VM 內的 K8s,執行以下命令:

multipass exec microk8s-vm -- /snap/bin/microk8s.config > kubeconfig     

下一步,在本地主機安裝 kubectl,然後使用 kubeconfig:

kubectl --kubeconfig=kubeconfig get all --all-namespaces            
NAMESPACE  NAME  TYPE  CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE        
Default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 3m12s

步驟 3:用 Mutlpass 服務訪問 VM 並開啟 MicroK8s 元件

配置基礎的 MicroK8s 元件是開啟 Grafana 儀表,下面我們將展示一步開啟 Grafana,監視和分析一個 MicroK8s 例項。可執行以下命令:

multipass exec microk8s-vm -- /snap/bin/microk8s.enable dns dashboard
Enabling DNS
Applying manifest
service/kube-dns created
serviceaccount/kube-dns created
configmap/kube-dns created
deployment.extensions/kube-dns created
Restarting kubelet
DNS is enabled
Enabling dashboard
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
service/monitoring-grafana created
service/monitoring-influxdb created
service/heapster created
deployment.extensions/monitoring-influxdb-grafana-v4 created
serviceaccount/heapster created
configmap/heapster-config created
configmap/eventer-config created
deployment.extesions/heapster-v1.5.2 created
dashboard enabled

接下來,用下面命令檢查部署程式:

multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl get all --all-namespaces                                                                                                                        

返回資訊如下:

一旦所有的必要服務已開啟,接下來使用以下的連結訪問儀表。命令如下:

multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl cluster-info  
Kubernetes master is running at https://127.0.0.1:16443
Heapster is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Grafana is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

如果我們在 VM 內,可以用此連結來訪問 Grafana 儀表。不過,我們可以通過代理在主機上訪問。

multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl proxy --address='0.0.0.0' --accept-hosts='.*' 
Starting to serve on [::][::]:8001

保持終端執行狀態,記一下埠號(8001),我們在下一步需要用到。要訪問 Grafana 儀表,我們需要修改 VM 內儀表的連結: 

  • 使用 VM 的 IP 替換 127.0.0.1(multipass info microk8s-vm
  • 將埠(16443)替換為代理埠 8001。
  • 在瀏覽器內輸入這個連結地址:https://127.0.0.1:8001/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy,你將看到 Grafana 儀表,如下圖:

總結

使用 MicroK8s 在本地開發和測試應用,將使得團隊在部署上更快,這對於開發者和 DevOp 團隊來說是非常有價值和意義的。

如何在 Mac 上配置 Kubernetes

 

如何在 Mac 上配置 Kubernetes

訂閱“Linux 中國”官方小程式來檢視

相關文章