这篇文章给大家分享的是有关基于Ubuntu 20.04如何安装MicroK8s 1.20.2的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
MicroK8s是目前最小、最快与Kubernetes全面兼容的集群系统,主要用于工作站和小型团队,但是目前镜像并没有与snap打包在一起,还在gcr.io上,国内下载上还是有问题。MicroK8s适合离线开发、原型开发和测试,尤其是运行VM作为小、便宜、可靠的k8s用于CI/CD。支持arm架构,也适合开发 IoT 应用,通过 MicroK8s 部署应用到小型Linux设备上。
通过snap进行安装:
sudo snap install microk8s --classic
试一下:
microk8s status #输出如下 microk8s is running high-availability: no datastore master nodes: 127.0.0.1:19001 datastore standby nodes: none addons: enabled: dashboard # The Kubernetes dashboard dns # CoreDNS ha-cluster # Configure high availability on the current node ingress # Ingress controller for external access metallb # Loadbalancer for your Kubernetes cluster metrics-server # K8s Metrics Server for API access to service metrics storage # Storage class; allocates storage from host directory disabled: ambassador # Ambassador API Gateway and Ingress cilium # SDN, fast with full network policy fluentd # Elasticsearch-Fluentd-Kibana logging and monitoring gpu # Automatic enablement of Nvidia CUDA helm # Helm 2 - the package manager for Kubernetes helm3 # Helm 3 - Kubernetes package manager host-access # Allow Pods connecting to Host services smoothly istio # Core Istio service mesh services jaeger # Kubernetes Jaeger operator with its simple config keda # Kubernetes-based Event Driven Autoscaling knative # The Knative framework on Kubernetes. kubeflow # Kubeflow for easy ML deployments linkerd # Linkerd is a service mesh for Kubernetes and other frameworks multus # Multus CNI enables attaching multiple network interfaces to pods portainer # Portainer UI for your Kubernetes cluster prometheus # Prometheus operator for monitoring and logging rbac # Role-Based Access Control for authorisation registry # Private image registry exposed on localhost:32000 traefik # traefik Ingress controller for external access
准备Microk8s需要的镜像:
MicroK8s的Kubernetes基础服务是通过systemd的多个服务来提供的(参考/etc/systemd/system目录下的服务名称)。但是目前(1.20.2)的pause服务(3.0)还是在gcr.io上,因此需要单独抓取下来离线部署,否则就会出现各种服务运行正常,但是kubelet服务运行时出错的情况。
#针对Microk8s 1.20.2 MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/google_containers microk8s ctr images pull ${MY_REGISTRY}/pause:3.1 microk8s ctr images tag ${MY_REGISTRY}/pause:3.1 k8s.gcr.io/pause:3.1 microk8s ctr images pull docker.io/pollyduan/ingress-nginx-controller:v0.35.0 microk8s ctr images tag docker.io/pollyduan/ingress-nginx-controller:v0.35.0 k8s.gcr.io/ingress-nginx/controller:v0.35.0 microk8s ctr images pull docker.io/faizanofc/metrics-server-amd64:v0.3.6 microk8s ctr images tag docker.io/faizanofc/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6
安装dns和本地存储服务:
microk8s dns storage
安装gpu支持:
microk8s enable gpu
metallb提供一个本地的LoadBalancer服务,可以自动分配IP给服务,从而让外部可以访问。
为私有Kubernetes集群创建LoadBalancer服务
microk8s enable metallb
接下来我们要生成一个 Configmap 文件,为 Metallb 设置网址范围以及协议相关的选择和配置,这里以一个简单的二层配置为例:
apiVersion: v1kind: ConfigMapmetadata: namespace: metallb-system name: configdata: config: | address-pools: - name: my-ip-space protocol: layer2 addresses: - 10.211.55.240/28
注意:这里的 IP 地址范围需要跟集群实际情况相对应。
使用 kubectl apply
命令应用之后,使用 microk8s.kubectl logs -f [metallb-controller-pod]
会看到配置更新过程。
创建一个 Nginx 的服务,服务类型为 LoadBalancer
:
apiVersion: apps/v1beta2kind: Deploymentmetadata: name: nginxspec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1 ports: - name: http containerPort: 80---apiVersion: v1kind: Servicemetadata: name: nginxspec: ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer
4.1 安装
microk8s enable dashboard
4.2 配置服务
配置dashboard服务可以外部访问,可以是proxy、NodePort、LoadBalancer。我还是喜欢用NodePort,把ClusterType改为NodePort,然后port部分增加一个30000-32768之间的端口号。如下:
microk8s.kubectl edit svc/dashboard -n kube-system
如果编辑有问题,先安装vim。
sudo apt install vim
再执行上面的kubectl edit命令,按 i 进入编辑模式,esc 退出,按 : 进入命令行,按 wq写入后退出,强制退出按q!。
关于暴露服务到外部访问,有多种方法:
Nodeport、Loadbalancer和Ingress,https://my.oschina.net/u/2306127/blog/1647202
4.3 获取服务端口
microk8s.kubectl get svc -n kube-system
根据上面显示的dashboard的外部端口,输入浏览器。
4.4 获取token
通过下面的方法获取登录的token:
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1) microk8s kubectl -n kube-system describe secret $token
然后,在dashboard中选择使用token登录,并把上面的token复制到输入框中,出现dashboard界面。
执行:
microk8s enable kubeflow
最后失败,安装回滚。
安装KubeFlow时出现问题,跟踪该issue:
https://github.com/ubuntu/microk8s/issues/958
https://github.com/kubeflow/manifests/issues/1761
在安装过程中,我使用Jupyter创建了服务和notebook,发现microk8s命令不能在notebook中执行。确认是路径的问题,如下即可:
%%bash export PATH=$PATH:/snap/bin/ microk8s status
或者将/snap/bin加入到启动时的profile之中。
感谢各位的阅读!关于“基于Ubuntu 20.04如何安装MicroK8s 1.20.2”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。