kubernetes-18-通过MicroK8s搭建K8s环境

官网Install MicroK8s on Windows
使用Microk8s快速部署kubernetes

1 MicroK8s

MicroK8s是一款功能强大,重量轻,可靠的生产型Kubernetes衍生版。 它是一种企业级Kubernetes发行版,具有较小的磁盘和内存占用空间,同时提供开箱即用的生产级附加组件,如Istio,Knative,Grafana,Cilium等。 无论您是在运行生产环境还是有兴趣探索K8s,MicroK8都能满足您的需求。

1.1 为什么选择MicroK8s

MicroK8s是最小,最快的多节点Kubernetes。 单包完全一致的轻量级Kubernetes,适用于42种Linux发行版,以及使用Multipass的Mac和Windows。 适合:开发人员工作站,IoT(物联网),Edge(边缘计算),CI/CD。

尝试使用过Kubernetes的人都知道必须处理设置和运行部署的痛苦。 市场上有极简主义的解决方案可以减少部署时间和复杂性,但重量轻的解决方案是以牺牲关键的可扩展性和缺少附件为代价的。

如果你不想花时间在坑里面让Kubernetes启动并运行,MicroK8s会让你在60秒内开始。

(1)轻量级别:开发人员希望最小的K8s用于笔记本电脑和工作站开发。 当您在Ubuntu上运行时,MicroK8s提供与Azure AKS,Amazon EKS,Google GKE兼容的独立K8s。
(2)简单化:使用单个软件包安装最大限度地减少管理和操作,该软件包没有移动部件以简化和确定。 包括所有依赖项和组件。
(3)安全:更新适用于所有安全问题,可立即应用或计划至您希望的维护周期执行。
(4)当前版本:MicroK8s跟踪上游并在同一天发布beta,RC和正式版,与上游K8s相同。 您可以跟踪最新的K8s或从1.10开始坚持任何发布版本。
(5)综合性:MicroK8s包括针对常见K8s功能和服务的策划集合:

(1)Service Mesh: Istio, Linkerd
(2)Serverless: Knative
(3)Monitoring: Fluentd, Prometheus, Grafana, Metrics
(4)Ingress, DNS, Dashboard, Clustering
(5)Automatic updates to the latest Kubernetes version
(6)GPGPU bindings for AI/ML
(7)Cilum, Helm and Kubeflow!

准备材料:
想要允许MicroK8s,你需要一台Linux的电脑且支持snap应用,例如Ubuntu。 如果你在使用Windows或者Mac OS,可以使用Multipass来允许MicroK8s。

1.2 windows安装MicroK8s

Kubeflow已经作为一个附加组件内置到MicroK8s中。这意味着一旦安装MicroK8s,就可以立即启用Kubeflow。

MicroK8s可在Windows、macOS和任何支持快照的Linux发行版上使用。您可以按照MicroK8s官方网站上的安装步骤下载并安装MicroK8s。
在这里插入图片描述
如何简单搭建Kubernetes集群,当时使用的是官方的工具箱:Kubeadm,这个方案对于只是想试试的同学来说,还是过于复杂。这里介绍一款简单的工具:MicroK8s。

官方给这款工具的人设是“无需运维的 Kubernetes ,服务于工作站、物联网。”最大的价值在于可以快速搭建单节点的容器编排系统,用于生产试验。

1.2.1 环境配置

(1)虚拟化
目前仅支持Windows 10 Pro或企业版1803(“2018年4月更新”)或更高版本。这是因为Hyper-V的正确版本仅在这些版本上可用。
(2)虚拟机
Multipass还支持将VirtualBox用作虚拟化提供程序。你可以在这里下载最新版本。
(3)网络
确保你连接的网络被标记为私有(这实际上意味着受信任),否则Windows将阻止multipass启动。
在这里插入图片描述
在这里插入图片描述

1.2.2 安装multipass

这一步可以选择安装,也可以选择不安装。

multipass下载地址
安装包multipass-1.8.0+win-win64.exe
Multipass是一个轻量级VM管理器,支持Linux、Windows与macOS,这是为希望使用单个命令提供全新Ubuntu环境的开发人员而设计的。

使用Linux上的KVM、Windows上的Hyper-V和macOS上的HyperKit来以最小的开销运行VM,同时它还可以在Windows和macOS上使用VirtualBox。

在这里插入图片描述

1.2.3 安装MicroK8s

windows10中安装MicroK8s步骤
我们推荐Windows 10 Professional或Windows 10 Enterprise。MicroK8还需要至少4GB的可用RAM和40GB的存储空间。
在这里插入图片描述
一、下载安装包
microk8s-installer.exe【40M】
二、双击安装
在这里插入图片描述
三、自动安装Multipass【Hype-V】
安装程序检查Hyper-V是否可用并打开。如果您没有Hyper-v(例如在Windows 10 Home edition上),可以使用VirtualBox作为替代方案。

选择跳过,不使用安装包中自带的multipass。
四、配置MicroK8s
在这里插入图片描述
您可以在以后通过重新运行安装程序来更改此配置。
请注意,内存和磁盘限制最初设置为最小值。
如果您计划运行大型工作负载(例如,kubeflow将需要大约12GB的RAM),您将希望将这些设置得更高。

会自动拉取镜像。
打开命令行窗口,进行后续的操作。
五、查看MicroK8s何时启动并运行

CMD>microk8s status --wait-ready

在这里插入图片描述

1.3 ubuntu安装MicroK8s

​ Microk8s是本地部署Kubernetes集群的click-and-run方案,最初由Ubuntu的发布者Canonical开发。不同于Minikube的是,它使用snap包进行部署,而不是在本地启动虚拟机来进行部署。

从跨平台的角度来考虑,Minikube确实可以支持更多的平台,而Microk8s只支持少数几个特定平台。但是从资源占用的角度来考虑,由于不需要使用虚拟机,Microk8s使得你可以留更多的物理资源供你的应用使用。同时令人惊喜的是,Microk8s目前已经支持用多个机器来构建多节点的k8s集群了。

​ 总的来说,MicroK8s提供了一种快速简易的方法,使得少量的计算机和虚拟机变成一个多节点的 Kubernetes集群。

安装ubuntu时会自动安装。

1.4 Microk8s使用的CRE(containerd)

在这里插入图片描述

2 windows中使用MicroK8s

2.1 进入kubernetes

MicroK8s捆绑了自己版本的kubectl,用于访问Kubernetes。使用它运行命令来监视和控制你的Kubernetes。
例如,要查看节点,请执行以下操作:

CMD>microk8s kubectl get nodes
CMD>microk8s kubectl get services

在这里插入图片描述

2.2 应用插件启停服务

MicroK8s使用最少的组件,打造出一款纯粹、轻盈的Kubernetes。

然而,通过使用“add-ons”——对你的Kubernetes,提供额外功能的预包装组件,从简单的DNS管理到机器学习Kubeflow!

要启动,建议添加DNS管理以方便服务之间的通信。对于需要存储的应用程序,"storage"附加组件
在主机上提供目录空间。这些设置很容易:

启动服务
CMD>microk8s enable dns storage
CMD>microk8s enable dashboard
停止服务
CMD>microk8s disable dns

2.3 使用Kubernetes

MicroK8s封装了Kubernetes用户熟悉的kubectl命令,因此您可以简单地执行任何常见的Kubernetes操作。

CMD>microk8s kubectl get all --all-namespaces

2.4 进入dashboard

进入Kubernetes dashboard
microk8s dashboard-proxy

2.5 启动和停止Kubernetes

Kubernetes是一个系统服务的集合,它们一直在相互通信。如果你不需要它们在后台运行,那么你可以通过停止它们来节省电池和资源。

CMD>microk8s start
CMD>microk8s stop

(3)在Kubernetes启动时检查状态

microk8s status --wait-ready

(4)启动服务

microk8s enable dashboard dns registry istio
查看可用的内建服务列表
microk8s enable --help 
microk8s disable turns off a service.

3 ubuntu中使用MicroK8s

使用Microk8s在本地启动一个单节点k8s集群。
启动microk8s自带的几个插件,包括DNS和Dashboard。
运行一个nginx应用查看效果。

检查安装的集群状态

sudo microk8s.kubectl get nodes
NAME        STATUS     ROLES    AGE   VERSION
mymachine   NotReady   <none>   18d   v1.23.6-2+2a84a218e3cd52

正常情况下应该看到的是当前状态为Ready这样的输出,显示我们的集群中有一个k8s工作节点。但是如果你使用的机器不能够科学上网的话,可能节点的状态会为NotReady。接下来先介绍如何简化kubectl命令使用,接着介绍节点NotReady情况下要怎么修复。

3.1 简化kubectl命令

(1)首先解决必须要sudo才能执行microk8s命令的问题。运行下面的命令,将你当前的用户加到 microk8s 用户组内:

sudo usermod -a -G microk8s ubuntu
sudo chown -f -R ubuntu ~/.kube
newgrp microk8s//重新加载用户组

(2)然后解决每次kubectl命令前面都必须要加上microk8s的问题,我们给microk8s.kubectl取别名为mkubectl:

sudo snap alias microk8s.kubectl mkubectl
mkubectl get nodes//可以简单使用

在这里插入图片描述

3.2 解决科学上网问题

该问题NotReady的原因是由于谷歌服务器被墙,导致有一些镜像拉不到。通过下面的几条命令就可以看到为什么集群的状态不健康了:

mkubectl get pods -n kube-system
mkubectl describe pod calico-node-q424c -n kube-system

在这里插入图片描述
具体问题如下所示:我们只需要从别的地方下载到所需要的镜像(这里是k8s.gcr.io/pause:3.1),保证运行在我们机器上的Pod可以正常获取镜像就可以了。具体怎么解决可以参考其他文章,我个人使用的是阿里云镜像加速器。
在这里插入图片描述

(1)拉取镜像
sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
(2)修改标签
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
(3)删除原镜像
sudo docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1

当本地Docker镜像仓库中有了k8s.gcr.io/pause:3.1这个镜像之后,Pod却仍然无法获取镜像,这是怎么回事?原来Microk8s使用的CRE是containerd,我们需要再将Docker镜像仓库里的镜像放到Microk8s使用的镜像仓库里去:

sudo docker save k8s.gcr.io/pause:3.1 > pause.tar
microk8s ctr image import pause.tar

这下再看pod状态已经都正常了:
在这里插入图片描述
后面的使用过程中,我们仍然会多次遇到镜像拉取不到的问题,都需要用这种方法解决。

3.3 启用插件

使用MicroK8s其中最大的好处之一事实上是也支持各种各样的插件和扩展。更重要的是它们是开箱即用的,用户仅仅需要启动它们。通过运行 microk8s.status命令检查出扩展的完整列表。

sudo microk8s.status

在这里插入图片描述

3.3.1 开启DNS

sudo microk8s enable dns

在这里插入图片描述

sudo microk8s kubectl get pods -n kube-system

在这里插入图片描述
开启过后kube-system名字空间下面会多一个coredns的Pod。

3.3.2 开启Dashboard

sudo microk8s enable dashboard

在这里插入图片描述
一、拉取缺失的镜像

sudo microk8s kubectl get pods -n kube-system
mkubectl describe pod metrics-server-679c5f986d-fnpq2 -n kube-system
发现缺少镜像k8s.gcr.io/metrics-server/metrics-server:v0.5.2
sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2 k8s.gcr.io/metrics-server/metrics-server:v0.5.2
sudo docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2
sudo docker save  k8s.gcr.io/metrics-server/metrics-server:v0.5.2 > metrics-server.tar
microk8s ctr image import metrics-server.tar

二、获取Token:

token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token

三、获取dashboard的ClusterIP

microk8s kubectl get svc -n kube-system

在这里插入图片描述
访问页面 https://{ClusterIP}:443,使用刚刚获取到的Token登录,就可以看到如下画面了。
实际上通过ClusterIP什么也访问不到。

3.3.3 外网访问Dashboard

一、编辑aa.yaml文件

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard-zdy
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      nodePort: 32000
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

在这里插入图片描述

二、启动

sudo microk8s kubectl create -f aa.yaml

在这里插入图片描述
获取token后,通过浏览器https://192.168.1.5:32000/访问。
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮冰燃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值