如何在Mac上配置Kubernetes
by liam zheng on 9 July 2019
Mac用户可使用MicroK8s运行Kubernetes环境进而开发、测试应用。通过下面的步骤可轻松搭建此环境。

MicroK8s 是一个Ubuntu推出的一个本地的Kubernetes版本。它是一个轻量级的snap应用,可安装到PC上作为一个单节点集群使用。尽管MicroK8s仅针对Linux构建,但是也可以在Mac上启Ubuntu VM来实现。
MicroK8s可在Ubuntu和任意支持snap的OS上运行全部原生的Kubernetes服务。这对于开发应用,创建简单的K8s集群和本地微服务开发非常有帮助,所有的开发工作最终都还是需要部署的。
MicroK8s提供另一个级别的可靠性因为它提供了与当前Kubernetes版本一致的开发环境。 在最新的上游K8s发布后的一周内,在Ubuntu上即可使用。(以下简称Kubernetes为K8s)
在Mac上配置Kubernetes
K8s和MicroK8s都需要一个Linux内核来工作,因此2者都需要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内仪表的链接:
总结
使用MicroK8s在本地开发和测试应用,将使得团队在部署上更快,这对于开发者和DevOp团队来说是非常有价值和意义的。
订阅博客文章
查看更多内容
Canonical 宣布推出 12 年 Kubernetes LTS
Canonical 的 Kubernetes LTS(长期支持)将支持 FedRAMP 合规性,并在裸机、公共云、OpenStack、Canonical MicroCloud 和 VMware 上获得至少 12 年的承诺安全维护和企业支持。 Canonical 宣布,从 Kubernetes 1.32 开始,将提供 12 年的安全维护和支持。新版本易于安装、操作和升级,具有一流的开源网络、DNS、网关、度量服务器、本地存储、负载平衡器和入口服务。Canonical Kubernetes 使客户能够按照自己的节奏进行升级,对于喜欢快速行动的组织,将每四个月发布一次新的上游版本,对于需要长期支持环境的组织,则提供 12 年的承诺。 “Kubernetes 的不断升级是企业团队 […]
利用开源机器学习基础架构加速 AI 发展
人工智能技术在迅速发展,对稳健强大且可扩展的基础架构具有迫切需求。为应对这些挑战,我们精心打造了一套全面的参考架构(RA),充分利用了开源工具与尖端硬件的强大功能与性能。这套架构基于 Canonical 的 MicroK8s 和 Charmed Kubeflow 构建,运行于 Dell PowerEdge R7525 服务器之上,并借助NVIDIA NIM 微服务实现加速,为部署和管理机器学习工作负载提供了一个简便高效的途径。 为数据科学家与工程师赋能 该解决方案旨在为数据科学家和机器学习工程师赋能,使其能够实现更快迭代、无缝扩展以及强有力的安全保障。对于基础架构构建者、解决方案架构师、DevOps 工程师以及首席技术官(CTO)而言,这套参考架构提供了一条畅通无阻的途径 […]
互联汽车软件开发:Anbox Cloud 为安全护航
当下,Android Automotive 操作系统(AAOS)是各大汽车制造商打造车载信息娱乐系统的首选。AAOS 是一个功能完备的信息娱乐平台,支持各类应用程序、功能和服务,其使用体验与人们熟悉的 Android 手机大同小异。 AAOS 可助力开发者构建出提升驾驶体验的新应用和新功能,促使兼容应用与服务生态系统迅速壮大。 然而遗憾的是,开发强大稳健的信息娱乐系统并非易事,前方的道路漫长且充满挑战。硬件可用性、物流配送以及系统配置等方面都存在挑战。例如,对硬件的依赖常常会导致测试中出现问题和延误。不仅如此,许多硬件变体也与开发者的测试环境存在差异,这使得搭建具有代表性的测试台变得十分困难。 云原生方案就是解决物理硬件问题的有力办法:其无需进行实物运输、搬运或安装,就能 […]