如何在 Mac 上配置 Kubernetes
Mac 用户可使用 MicroK8s 运行 Kubernetes 环境，进而开发、测试应用。通过下面的步骤可轻松搭建此环境。
MicroK8s Kubernetes
220.188.54.232
s k
delrey [Mobile Safari 12.1|iOS 12.3]
2019-07-17T13:05:18.000
Mac 用户可使用 MicroK8s 运行 Kubernetes 环境，进而开发、测试应用。通过下面的步骤可轻松搭建此环境。
![](/data/attachment/album/201907/11/232103nkj6zwgp4jl4n47z.jpg)


Mac 用户可使用 MicroK8s 运行 Kubernetes 环境，进而开发、测试应用。通过下面的步骤可轻松搭建此环境。


[MicroK8s](https://microk8s.io/) 是一个 Ubuntu 推出的一个本地的 Kubernetes 版本。它是一个轻量级的 snap 应用，可安装到 PC 上作为一个单节点集群使用。尽管 MicroK8s 仅针对 Linux 构建，但是也可以在 Mac 上启动 Ubuntu VM 来实现。


MicroK8s 可在 Ubuntu 和任意支持 snap 的 OS 上运行全部[原生的 K8s 服务](https://ubuntu.com/blog/how-to-deploy-production-ready-kubernetes)。这对于开发应用，创建简单的 K8s 集群和本地微服务开发非常有帮助，所有的开发工作最终都还是需要部署的。


MicroK8s 提供另一个级别的可靠性因为它提供了与当前 Kubernetes（以下简称 Kubernetes 为 K8s）版本一致的开发环境。 在[最新的上游 K8s](https://ubuntu.com/kubernetes/install) 发布后的一周内，在 Ubuntu 上即可使用。


### 在 Mac 上配置 Kubernetes


K8s 和 MicroK8s 都需要一个 Linux 内核来工作，因此二者都需要 Ubuntu 环境。Mac 用户可使用 Multipass，此工具被设计为方便用户在 Mac、Windows、Linux 上开启 Ubuntu VM（虚拟）环境。 


下面的教程将介绍在 Mac 上配置 Multipass 和运行 K8s。


#### 步骤1：使用 Multipass 为 Mac 安装一个 VM


最新的 [Multipass 的程序包可在 GitHub 上](https://github.com/CanonicalLtd/multipass/releases)找到，双击 .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](https://kubernetes.io/docs/tasks/tools/install-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                                                                                                                        
```

返回信息如下：


![](/data/attachment/album/201907/11/232126fd957yz19zjeuyfy.png)


一旦所有的必要服务已开启，接下来使用以下的链接访问仪表。命令如下：



```
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 仪表，如下图：


![](/data/attachment/album/201907/11/232127jgd0o9oodtdr5ado.png)


### 总结


使用 MicroK8s 在本地开发和测试应用，将使得团队在部署上更快，这对于开发者和 DevOp 团队来说是非常有价值和意义的。


![](/data/attachment/album/201907/11/232127l52rrqvzntxqpprq.png) 


 

