共計 5214 個字符,預計需要花費 14 分鐘才能閱讀完成。
怎么進行 MicroK8s 快速入門,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
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
關于如何設置,參考: channel ?
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 里還沒有試過,不知道能否全部兼容。
Helm 使用參考:
Helm hub,https://hub.helm.sh
Helm 3 簡介,https://www.oschina.net/news/111342/helm-3-0-released
Helm 源碼,https://github.com/helm/helm
使用 add-ons
MicroK8s 使用盡可能少的輕量級 Kubernetes 組件。但是通過 add-ons
目前 KubeFlow 支持還有些問題:
目前的 KubeFlow0.7.1 只能支持 Kubernetes1.16 以下版本,但是 MicroK8s 的 1.16 版本還沒有 KubeFlow 的集成,K8s 的 1.16 及以上版本運行 KubeFlow 還有些問題。
參考:KubeFlow- 在 Microk8s 部署與應用
建議添加 DNS 管理以方便服務的通訊。對于需要存儲的應用 storage add-on 提供主機的目錄空間。比較容易設置:
microk8s.enable dns storage
查看完整的插件列表,參考:
See the full list of addons ?
啟動和停止 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 命令對應。
看完上述內容,你們掌握怎么進行 MicroK8s 快速入門的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!