MicroK8s 快速入门

原创
03/02 09:16
阅读数 4.7K

MiroK8s是目前最小、最快与Kubernetes全面兼容的集群系统,主要用于工作站和小型团队,但是目前镜像并没有与snap打包在一起,还在gcr.io上,国内下载上还是有问题。MicroK8s适合离线开发、原型开发和测试,尤其是运行VM作为小、便宜、可靠的k8s用于CI/CD。支持arm架构,也适合开发 IoT 应用,通过 MicroK8s 部署应用到小型Linux设备上。

运行环境

  • 操作系统 Ubuntu 18.04 LTS 或16.04 LTS 环境 (或其他支持 snapd 的操作系统- see the snapd documentation)。
  • 至少 20G 磁盘空间, (建议)4G 内存。
  • internet connection(需要能访问gcr.io)

注意:如果没有上面的硬件环境,其它方式安装 MicroK8s,包括其它操作系统和离线部署,参考  alternative install 页面。

安装MicroK8s

MicroK8s 将安装一个轻量级的 Kubernetes,可以用于任何机器。通过snap安装,如下:

sudo snap install microk8s --classic --channel=1.17/stable

Raspberry Pi/ARM

Running MicroK8s on some ARM hardware may run into difficulties because cgroups (required!) are not enabled by default. This can be remedied on the Rasberry Pi by editing the boot parameters:

sudo vi /boot/firmware/nobtcmd.txt

Note:In older Raspberry Pi versions the boot parameters are in /boot/firmware/cmdline.txt.

加上:

cgroup_enable=memory cgroup_memory=1

添加 group

MicroK8s 创建 group 用于 commands的操作,需要admin权限。通过下面方式添加:

sudo usermod -a -G microk8s $USER
需要重新打开当前控制台:
su - $USER

检查状态

MicroK8s 有内置命令显示状态。安装时使用参数   --wait-ready  等待 Kubernetes services 初始化。
microk8s.status --wait-ready

访问Kubernetes

MicroK8s 绑定自己的 kubectl版本用于访问 Kubernetes集群。

microk8s.kubectl get nodes

查看服务:

microk8s.kubectl get services

MicroK8s 使用命名空间化的 kubectl 命令以防止其它的kubectl安装的冲突。如果没有其他安装,也可以添加别名 (append to ~/.bash_aliases) ,如:

alias kubectl='microk8s.kubectl'

部署应用

使用 kubectl 命令来访问Kuberenetes,如(国内换成其它的镜像,因为gcr.io访问不到):

microk8s.kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

检查状态:

microk8s.kubectl get pods

使用helm来部署应用会简单很多,而且方便部署大型应用。不过,我在MicroK8s里还没有试过,不知道能否全部兼容。

使用 add-ons

MicroK8s 使用尽可能少的轻量级 Kubernetes组件。但是通过 "add-ons" 可以添加很多高级功能,是通过预先打包的,如 DNS 管理以及支持机器学习的Kubeflow。

  • 目前KubeFlow支持还有些问题:
    • 目前的KubeFlow0.7.1只能支持Kubernetes1.16以下版本,但是MicroK8s的1.16版本还没有KubeFlow的集成,K8s的1.16及以上版本运行KubeFlow还有些问题。
    • 参考:KubeFlow-在Microk8s部署与应用

建议添加 DNS 管理以方便服务的通讯。对于需要存储的应用 'storage' add-on 提供主机的目录空间。比较容易设置:

microk8s.enable dns storage
查看完整的插件列表,参考:

启动和停止 MicroK8s

MicroK8s 将会一直运行,使用下面的命令来启动或停止:

microk8s.stop

... 将会停止 MicroK8s 及其 services。可以再次启动,使用:

microk8s.start

关于服务

在MicroK8s里,不再由kubelet来启动apiserver等容器,而是全部由systemd来管理apiserver/scheduler/controller-manager,而且容器由containerd进行管理(而不是docker),可以通过microk8s.ctr来查看容器相关的信息。

服务:

ubuntu@ubuntu:/etc/systemd/system$ ls -l

-rw-r--r-- 1 root root  255 Apr  8 10:38 snap-microk8s-1295.mount
-rw-r--r-- 1 root root  509 Apr  8 10:38 snap.microk8s.daemon-apiserver-kicker.service
-rw-r--r-- 1 root root  488 Apr  8 10:38 snap.microk8s.daemon-apiserver.service
-rw-r--r-- 1 root root  500 Apr  8 10:38 snap.microk8s.daemon-cluster-agent.service
-rw-r--r-- 1 root root  491 Apr  8 10:38 snap.microk8s.daemon-containerd.service
-rw-r--r-- 1 root root  515 Apr  8 10:38 snap.microk8s.daemon-controller-manager.service
-rw-r--r-- 1 root root  473 Apr  8 10:38 snap.microk8s.daemon-etcd.service
-rw-r--r-- 1 root root  485 Apr  8 10:38 snap.microk8s.daemon-flanneld.service
-rw-r--r-- 1 root root  482 Apr  8 10:38 snap.microk8s.daemon-kubelet.service
-rw-r--r-- 1 root root  476 Apr  8 10:38 snap.microk8s.daemon-proxy.service
-rw-r--r-- 1 root root  488 Apr  8 10:38 snap.microk8s.daemon-scheduler.service

查看服务的信息:

ubuntu@ubuntu:/etc/systemd/system$ sudo systemctl status snap.microk8s.daemon-kubelet
● snap.microk8s.daemon-kubelet.service - Service for snap application microk8s.daemon-kubelet
   Loaded: loaded (/etc/systemd/system/snap.microk8s.daemon-kubelet.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-04-16 11:35:59 UTC; 30ms ago
 Main PID: 18351 (snap)
    Tasks: 6 (limit: 4441)
   CGroup: /system.slice/snap.microk8s.daemon-kubelet.service
           └─18351 /usr/bin/snap run microk8s.daemon-kubelet

Apr 16 11:35:59 ubuntu systemd[1]: Started Service for snap application microk8s.daemon-kubelet.

查看容器信息:

ubuntu@ubuntu:/etc/systemd/system$ sudo microk8s.ctr
NAME:
   ctr - 
        __
  _____/ /______
 / ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/

containerd CLI


USAGE:
   ctr [global options] command [command options] [arguments...]

VERSION:
   v1.2.5

COMMANDS:
     plugins, plugin           provides information about containerd plugins
     version                   print the client and server versions
     containers, c, container  manage containers
     content                   manage content
     events, event             display containerd events
     images, image, i          manage images
     leases                    manage leases
     namespaces, namespace     manage namespaces
     pprof                     provide golang pprof outputs for containerd
     run                       run a container
     snapshots, snapshot       manage snapshots
     tasks, t, task            manage tasks
     install                   install a new package
     shim                      interact with a shim directly
     cri                       interact with cri plugin
     help, h                   Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug                      enable debug output in logs
   --address value, -a value    address for containerd's GRPC server (default: "/run/containerd/containerd.sock")
   --timeout value              total timeout for ctr commands (default: 0s)
   --connect-timeout value      timeout for connecting to containerd (default: 0s)
   --namespace value, -n value  namespace to use with commands (default: "default") [$CONTAINERD_NAMESPACE]
   --help, -h                   show help
   --version, -v                print the version

其中,images和containers分别与docker的images和ps命令对应。

下一步

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部