如何在 Mac 上配置 Kubernetes
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) 


 


# 如何在Mac上配置Kubernetes

by liam zheng on 9 July 2019

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

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

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

MicroK8s提供另一个级别的可靠性因为它提供了与当前[Kubernetes](https://cn.ubuntu.com/blog/canonical-kubernetes-1-15-upgrade)版本一致的开发环境。 在[最新的上游K8s](https://ubuntu.com/kubernetes/install)发布后的一周内，在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上](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

返回信息如下：

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

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团队来说是非常有价值和意义的。

##### 订阅博客文章

### 查看更多内容

####
[
Charmed PostgreSQL 全面上市
](/blog/charmed-postgresql_cn)

值得信赖的企业级 PostgreSQL Canonical 正式发布 Charmed PostgreSQL，这是一款企业级解决方案，有助于确保安全性，可自动完成 PostgreSQL 数据库在私有云和公共云上的部署、维护和升级。 PostgreSQL 是一个开源数据库管理系统。已在 IT 领域应用超过 30 年。成熟的技术、活跃的社群使其始终成为开发人员的首选 DBMS。 Canonical 推出的 Charmed PostgreSQL 便以此为基础进行构建并提供额外的功能，能够满足您的一切企业需求： 长达 10 年的安全维护和支持 订阅 Ubuntu Pro，即可购买 Charmed PostgreSQL 安全与支持服务。Ubuntu Pro 订阅提供长达 10 年的安 […]

####
[
首席信息安全官对欧盟《网络弹性法案》的全面解析
](/blog/a-cisos-comprehensive-breakdown-of-the-cyber-resilience-act_cn)

强有力的、影响广泛的监管政策可以为社会提供安全保障，但也可能带来不确定性。事实证明，《网络弹性法案》（Cyber Resilience Act，CRA）也并不例外。在开源领域乃至更广泛的技术领域，人们对该法案的推行一直有着各种不同的反应——或是担忧，或是焦虑，或是充满希望。 但哪些方面会让人担心呢？CRA 真的会给开源领域带来变化吗？您的团队应该如何针对这项法规做好准备？在本文中，笔者将深入探讨 CRA 及其目的、要求和对开源领域的影响，并就对于 CRA 的准备给出个人的网络安全建议。 什么是《网络弹性法案》（CRA）？ CRA 是欧盟即将出台的一项法规，旨在通过对欧盟 IT 行业实施更严格的网络安全、文档和漏洞报告要求，提高设备安全性。该法规将适用于硬件、设备、软件、 […]

####
[
Canonical 为任何 open source Docker 镜像提供 12 年长期支持
](/blog/canonical-offers-12-year-lts-for-any-open-source-docker-image_cn)

“Everything LTS 计划”— Canonical 将根据客户的规格要求构建 distroless Docker 镜像，其中包括 Ubuntu 中未打包的上游组件，并在 24 小时内修复关键的 CVE 漏洞，在 RHEL、Ubuntu、VMware 或公共云 K8s 上畅享长达 12 年以上的支持。 Canonical 将其 LTS 产品扩展到 Ubuntu 的 “deb” 包以外，并推出了一项新的 distroless Docker 镜像设计与构建服务，该项服务为任何开源应用程序或依赖项均提供 12 年的安全维护，无论该软件是否是 Ubuntu 中已打包的软件。 「Everything LTS 计划意味着 CVE 维护将覆盖您的整个开源依赖项树，包括 Ubun […]