如何在Mac上配置Kubernetes
Mac 用戶可使用 MicroK8s 運(yùn)行 Kubernetes 環(huán)境,進(jìn)而開(kāi)發(fā)、測(cè)試應(yīng)用。通過(guò)下面的步驟可輕松搭建此環(huán)境。
MicroK8s 是一個(gè) Ubuntu 推出的一個(gè)本地的 Kubernetes 版本。它是一個(gè)輕量級(jí)的 snap 應(yīng)用,可安裝到 PC 上作為一個(gè)單節(jié)點(diǎn)集群使用。盡管 MicroK8s 僅針對(duì) Linux 構(gòu)建,但是也可以在 Mac 上啟動(dòng) Ubuntu VM 來(lái)實(shí)現(xiàn)。
MicroK8s 可在 Ubuntu 和任意支持 snap 的 OS 上運(yùn)行全部原生的 K8s 服務(wù)。這對(duì)于開(kāi)發(fā)應(yīng)用,創(chuàng)建簡(jiǎn)單的 K8s 集群和本地微服務(wù)開(kāi)發(fā)非常有幫助,所有的開(kāi)發(fā)工作最終都還是需要部署的。
MicroK8s 提供另一個(gè)級(jí)別的可靠性因?yàn)樗峁┝伺c當(dāng)前 Kubernetes(以下簡(jiǎn)稱(chēng) Kubernetes 為 K8s)版本一致的開(kāi)發(fā)環(huán)境。 在***的上游 K8s 發(fā)布后的一周內(nèi),在 Ubuntu 上即可使用。
在 Mac 上配置 Kubernetes
K8s 和 MicroK8s 都需要一個(gè) Linux 內(nèi)核來(lái)工作,因此二者都需要 Ubuntu 環(huán)境。Mac 用戶可使用 Multipass,此工具被設(shè)計(jì)為方便用戶在 Mac、Windows、Linux 上開(kāi)啟 Ubuntu VM(虛擬)環(huán)境。
下面的教程將介紹在 Mac 上配置 Multipass 和運(yùn)行 K8s。
步驟1:使用 Multipass 為 Mac 安裝一個(gè) VM
***的 Multipass 的程序包可在 GitHub 上找到,雙擊 .pkg 即可安裝。用 MicroK8s 來(lái)啟動(dòng)一個(gè) 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)建了一個(gè)名字為 microk8s-vm 的 VM,分配了 4GB 內(nèi)存和 40GB 硬盤(pán)。
使用以下命令來(lái)查看 VM 分配的 IP 地址:(記一下下面的 IP,我們將從此開(kāi)始)
- multipass list
- Name State IPv4 Release
- microk8s-vm RUNNING 192.168.64.1 Ubuntu 18.04 LTS
步驟2:在 VM 上與 MicroK8s 互動(dòng)
可使用以下 3 種方式:
命令行,用 Multipass 的 shell 提示符:
- multipass shell microk8s-vm
用 multipass exec
來(lái)執(zhí)行一個(gè)命令(輸入后無(wú)提示):
- multipass exec microk8s-vm -- /snap/bin/microk8s.status
調(diào)用運(yùn)行在 VM 的 K8s API 服務(wù)器,這里使用 MicroK8s 的 kubeconfig 文件和一個(gè)本地的安裝的 kubectl 來(lái)訪問(wèn) 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ù)訪問(wèn) VM 并開(kāi)啟 MicroK8s 組件
配置基礎(chǔ)的 MicroK8s 組件是開(kāi)啟 Grafana 儀表,下面我們將展示一步開(kāi)啟 Grafana,監(jiān)視和分析一個(gè) MicroK8s 實(shí)例。可執(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
接下來(lái),用下面命令檢查部署進(jìn)程:
- multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl get all --all-namespaces
返回信息如下:
一旦所有的必要服務(wù)已開(kāi)啟,接下來(lái)使用以下的鏈接訪問(wèn)儀表。命令如下:
- 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'.
如果我們?cè)?VM 內(nèi),可以用此鏈接來(lái)訪問(wèn) Grafana 儀表。不過(guò),我們可以通過(guò)代理在主機(jī)上訪問(wèn)。
- 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),記一下端口號(hào)(8001),我們?cè)谙乱徊叫枰玫健RL問(wèn) Grafana 儀表,我們需要修改 VM 內(nèi)儀表的鏈接:
- 使用 VM 的 IP 替換 127.0.0.1(
multipass info microk8s-vm
) - 將端口(16443)替換為代理端口 8001。
- 在瀏覽器內(nèi)輸入這個(gè)鏈接地址:
https://127.0.0.1:8001/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
,你將看到 Grafana 儀表,如下圖:
總結(jié)
使用 MicroK8s 在本地開(kāi)發(fā)和測(cè)試應(yīng)用,將使得團(tuán)隊(duì)在部署上更快,這對(duì)于開(kāi)發(fā)者和 DevOp 團(tuán)隊(duì)來(lái)說(shuō)是非常有價(jià)值和意義的。