谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭Close

如何在Mac上配置Kubernetes

by liam zheng on 9 July 2019

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

A clean install of MicroK8s on macOS and the Grafana dashboard.

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内仪表的链接:

  • 使用VM的IP替换127.0.0.1(multipass info microk8s-vm)
  • 将端口(16443)替换为代理端口:8001。https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
  • 在浏览器内输入这个链接地址,你将看到Grafana仪表,如下图:
  • 总结

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

    订阅博客文章

    订阅您感兴趣的主题

    在提交此表格的同时,我确认已阅读和同意的隐私声明隐私政策。

    查看更多内容

    使用 MAAS 部署 VMware 虚拟机管理程序

    多数现代数据中心本身均为异构架构。VMware 环境常与容器平台、数据库及其他裸机业务负载共存,多年运行于同一套硬件之上。服务器一次性采购,但会随业务需求变化调整承载业务。 然而,ESXi(VMware 虚拟机管理程序)的配置通常由独立流程负责。主机通过 VMware 工具、自定义脚本或专为将部署 ESXi 到机器中开发的自动化程序完成安装。这些工作流单独运行虽行之有效,却未必能与物理基础设施的其他部分实现统一的追踪与管理。 由此导致了脱节:即便归属同一硬件资源池,ESXi 主机的管理方式仍与数据中心其他设备脱离。随着环境规模扩大、架构日趋多元化,这种割裂式管理会形成业务瓶颈。 将 ESXi 纳入统一裸机平台进行统筹管理将是更具扩展性的方案。这使得 ESXi 的配置流程, […]

    什么是 Ubuntu Pro?与标准版有不同吗?功能及内容详解

    Ubuntu Pro 是 Canonical 推出的全方位订阅服务,提供开源安全防护、技术支持与合规保障。从长达 15 年的安全维护、全天候技术支持,到面向 IT 管理员的自动化加固工具,深入了解 Ubuntu Pro 订阅包含的全部服务。 Ubuntu Pro 具备哪些功能? Ubuntu Pro 是一套安全合规订阅服务,可为操作系统、应用程序及 IT 运维各层级及时提供补丁与安全维护。它助力企业及其工程师保障软件与系统安全,并通过加固工具、自动化流程及一系列其他功能,为企业满足安全标准合规铺平道路。 了解关于 Ubuntu Pro 的更多信息 › Ubuntu Pro 与标准版 Ubuntu 有何不同? 很多人存在误区,误以为 Ubuntu Pro 是独立版本或全新操 […]

    代码热风险 – 软件供应链视角下,容器交付前要先“冷却”

    已遭遇的安全漏洞,与即将到来的威胁 2025 年 9 月,npm 软件仓库中包括 chalk 和 debug 在内的数十个热门 JavaScript 软件包遭入侵。这些软件包应用极为广泛,几乎无处不在:前端应用、后端微服务以及 CI 工具中均有使用。开发人员并无任何失误操作,他们只是执行了一贯使用的命令:npm install chalk。但恶意软件却悄无声息地侵入了。 这并非操作系统中的漏洞。也不是某台笔记本电脑上的病毒。这是一次供应链攻击:攻击者在开发者构建软件所使用的组件中植入了恶意代码。手段并不复杂,仅仅是一名开发者遭到钓鱼攻击、一次恶意发布,数百万下游用户便因看似是合法更新而将恶意代码引入系统。 而这确实是一次合法的更新。发布者并非有意植入恶意软件,也对此毫不知 […]