如何在Mac上配置Kubernetes
Mac 用戶可使用 MicroK8s 運(yùn)行 Kubernetes 環(huán)境,進(jìn)而開發(fā)、測試應(yīng)用。通過下面的步驟可輕松搭建此環(huán)境。
MicroK8s 是一個 Ubuntu 推出的一個本地的 Kubernetes 版本。它是一個輕量級的 snap 應(yīng)用,可安裝到 PC 上作為一個單節(jié)點集群使用。盡管 MicroK8s 僅針對 Linux 構(gòu)建,但是也可以在 Mac 上啟動 Ubuntu VM 來實現(xiàn)。
MicroK8s 可在 Ubuntu 和任意支持 snap 的 OS 上運(yùn)行全部原生的 K8s 服務(wù)。這對于開發(fā)應(yīng)用,創(chuàng)建簡單的 K8s 集群和本地微服務(wù)開發(fā)非常有幫助,所有的開發(fā)工作最終都還是需要部署的。
MicroK8s 提供另一個級別的可靠性因為它提供了與當(dāng)前 Kubernetes(以下簡稱 Kubernetes 為 K8s)版本一致的開發(fā)環(huán)境。 在***的上游 K8s 發(fā)布后的一周內(nèi),在 Ubuntu 上即可使用。
在 Mac 上配置 Kubernetes
K8s 和 MicroK8s 都需要一個 Linux 內(nèi)核來工作,因此二者都需要 Ubuntu 環(huán)境。Mac 用戶可使用 Multipass,此工具被設(shè)計為方便用戶在 Mac、Windows、Linux 上開啟 Ubuntu VM(虛擬)環(huán)境。
下面的教程將介紹在 Mac 上配置 Multipass 和運(yùn)行 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
確保為主機(jī)保留足夠的資源。上述命令表示我們創(chuàng)建了一個名字為 microk8s-vm 的 VM,分配了 4GB 內(nèi)存和 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
來執(zhí)行一個命令(輸入后無提示):
- multipass exec microk8s-vm -- /snap/bin/microk8s.status
調(diào)用運(yùn)行在 VM 的 K8s API 服務(wù)器,這里使用 MicroK8s 的 kubeconfig 文件和一個本地的安裝的 kubectl 來訪問 VM 內(nèi)的 K8s,運(yùn)行以下命令:
- multipass exec microk8s-vm -- /snap/bin/microk8s.config > kubeconfig
下一步,在本地主機(jī)安裝 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 服務(wù)訪問 VM 并開啟 MicroK8s 組件
配置基礎(chǔ)的 MicroK8s 組件是開啟 Grafana 儀表,下面我們將展示一步開啟 Grafana,監(jiān)視和分析一個 MicroK8s 實例。可執(zhí)行以下命令:
- 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
接下來,用下面命令檢查部署進(jìn)程:
- multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl get all --all-namespaces
返回信息如下:
一旦所有的必要服務(wù)已開啟,接下來使用以下的鏈接訪問儀表。命令如下:
- 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 內(nèi),可以用此鏈接來訪問 Grafana 儀表。不過,我們可以通過代理在主機(jī)上訪問。
- multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl proxy --address='0.0.0.0' --accept-hosts='.*'
- Starting to serve on [::][::]:8001
保持終端運(yùn)行狀態(tài),記一下端口號(8001),我們在下一步需要用到。要訪問 Grafana 儀表,我們需要修改 VM 內(nèi)儀表的鏈接:
- 使用 VM 的 IP 替換 127.0.0.1(
multipass info microk8s-vm
) - 將端口(16443)替換為代理端口 8001。
- 在瀏覽器內(nèi)輸入這個鏈接地址:
https://127.0.0.1:8001/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
,你將看到 Grafana 儀表,如下圖:
總結(jié)
使用 MicroK8s 在本地開發(fā)和測試應(yīng)用,將使得團(tuán)隊在部署上更快,這對于開發(fā)者和 DevOp 團(tuán)隊來說是非常有價值和意義的。