借助MicroK8s分分钟部署单节点Kubernetes实例
但如何启动并运行这个单节点?有很多方法可以实现。可以走Minikube这条路,或者启动标准Kubernetes安装的完整单节点,也可以使用Microk8s(https://microk8s.io/)。
Microk8s由Canonical管理,是一种非弹性的、基于rails的单节点Kubernetes工具,主要面向离线开发、原型设计和测试。Microk8s包括以下功能:
- Istio
- GPGPU绑定
- 每日构建
- 本地存储
- 本地注册中心
- 更新
- 仪表板
- 度量指标
- 升级
- IngressDNS
- Conformant
Microk8s已作为一个快照包而创建,因此为了安装和使用,你得拥有支持这种特定通用打包格式的Linux发行版。我会演示如何在Ubuntu Desktop 19.04发行版上启动和运行Microk8s。
安装
Microk8s的安装很简单。但在安装之前,确保你的发行版已更新。一旦完成该过程,打开终端窗口,执行命令(图A):
图A. 从命令行安装Microk8s
- sudo snap install microk8s --edge --classic
命令完成后,你需要启动Microk8s。这通过以下命令来完成:
- sudo microk8s.start
该命令应报告服务已启动,pod调度功能已被启用。
安装额外的服务
为了让Microk8大有用途,你需要安装几项额外的服务。不妨安装基本服务:kube-dns和Microk8s仪表板。仪表板是一个基于Web的仪表板,让你可以交互和管理Kubernetes。 Kube-dns在集群上调度DNS Pod和服务,并配置kubelete(每个节点上运行的主节点代理),以指示各个容器将DNS服务IP地址用作DNS解析器。
想安装这两项服务,回到终端窗口,执行命令:
- sudo microk8s.enable dns dashboard
你还可以启用其他服务,比如:
- storage—让你可以使用主机上的存储。
- Ingress—创建Ingress控制器。
- gpu—启用nvidia-docker运行时环境和nvidia-device-plugin-daemonset。
- istio—启用核心的Istio服务。
- registry—部署私有Docker注册中心。
如果你认定需要额外服务,在启动并运行Microk8后,你可以随时回过头去执行microk8s.enable命令(带有想要添加的服务)。
一旦安装了仪表板,你需要找到可以访问它的地址。为此,执行命令:
- sudo microk8s.kubectl get all --all-namespaces
上述命令将输出许多命名空间及相关地址。
B. 找到Microk8s仪表板的地址
寻找与service/kubernetes-dashboard关联的IP地址。
访问仪表板
你现在可以打开Web浏览器(在运行Microk8s的同一台计算机上),将其指向https://IP_ADDRESS(IP_ADDRESS是kubernetes-dashboard IP地址)。
此时,你会看到仪表板需要令牌才能获得访问权限。怎么找到那个令牌?首先你要使用以下命令让Microk8s列出所有可用的机密(secret):
- sudo microk8s.kubectl -n kube-system get secret
这将列出所有服务名称,并附有机密名称。如你所见(图C),Kubernetes仪表板包含在列表中。
C. 列出了含有机密的服务
想检索相应服务的秘密令牌,执行以下命令:
- sudo microk8s.kubectl -n kube-system describe secret kubernetes-dashboard-token-fv247
确保修改fv247条目,以匹配与你安装的Kubernetes Dashboard实例关联的密钥。
上述命令将显示一长串字符。复制该字符串,然后回到Web浏览器。在仪表板令牌窗口(图D)中,选择令牌,然后将复制的令牌粘贴到Enter token文本字段。
图D. Kubernetes仪表板令牌输入窗口
点击“SIGN IN”,你会发现自己已在Kubernetes仪表板上(图E)。
E. 使用GIMP来创建
此时,你可以从基于Web的仪表板管理Kubernetes。创建作业、pod、副本和计划任务等。点击右上角的“创建”按钮,你可以直接写入或者粘贴YAML或JSON文件的内容。比如假设你想创建NGINX部署。将以下内容复制到编辑器中(图F),然后点击UPLOAD。
- apiVersion: v1
- kind: ReplicationController
- metadata:
- name: nginx
- spec:
- replicas: 2
- selector:
- app: nginx
- template:
- metadata:
- name: nginx
- labels:
- app: nginx
- spec:
- containers:
- - name: nginx
- image: nginx
- ports:
- - containerPort: 80
图F. 上传用于NGINX部署的YAML文件
上传YAML文件后,点击Workloads> Pods,你会看到它已被列为正在运行中(图G)。
图G. NGINX部署已启动并运行中