知乎专栏 |
https://microk8s.io
更多配置参考官网 https://github.com/ubuntu/microk8s
latest/stable 安装最新版本
root@kubernetes:~# snap install microk8s --classic --channel=latest/stable microk8s v1.21.3 from Canonical✓ installed
查看安装情况
root@kubernetes:~# snap list Name Version Rev Tracking Publisher Notes core18 20210722 2128 latest/stable canonical✓ base lxd 4.0.7 21029 4.0/stable/… canonical✓ - microk8s v1.21.3 2346 latest/stable canonical✓ classic snapd 2.51.4 12883 latest/stable canonical✓ snapd
root@kubernetes:~# microk8s start Started.
启用或禁用 microk8s
snap disable microk8s # 禁用 snap enable microk8s # 启用
卸载
microk8s.reset snap remove microk8s
安装 VirtualBox
neo@ubuntu:~$ sudo apt install -y virtualbox
root@kubernetes:~# snap info microk8s name: microk8s summary: Lightweight Kubernetes for workstations and appliances publisher: Canonical✓ store-url: https://snapcraft.io/microk8s contact: https://github.com/ubuntu/microk8s license: unset description: | MicroK8s is the smallest, simplest, pure production Kubernetes for clusters, laptops, IoT and Edge, on Intel and ARM. One command installs a single-node K8s cluster with carefully selected add-ons on Linux, Windows and macOS. MicroK8s requires no configuration, supports automatic updates and GPU acceleration. Use it for offline development, prototyping, testing, to build your CI/CD pipeline or your IoT apps. commands: - microk8s.add-node - microk8s.cilium - microk8s.config - microk8s.ctr - microk8s.dashboard-proxy - microk8s.dbctl - microk8s.disable - microk8s.enable - microk8s.helm - microk8s.helm3 - microk8s.inspect - microk8s.istioctl - microk8s.join - microk8s.juju - microk8s.kubectl - microk8s.leave - microk8s.linkerd - microk8s - microk8s.refresh-certs - microk8s.remove-node - microk8s.reset - microk8s.start - microk8s.status - microk8s.stop services: microk8s.daemon-apiserver: simple, enabled, inactive microk8s.daemon-apiserver-kicker: simple, enabled, active microk8s.daemon-cluster-agent: simple, enabled, active microk8s.daemon-containerd: simple, enabled, active microk8s.daemon-control-plane-kicker: simple, enabled, inactive microk8s.daemon-controller-manager: simple, enabled, inactive microk8s.daemon-etcd: simple, enabled, inactive microk8s.daemon-flanneld: simple, enabled, inactive microk8s.daemon-kubelet: simple, enabled, inactive microk8s.daemon-kubelite: simple, enabled, active microk8s.daemon-proxy: simple, enabled, inactive microk8s.daemon-scheduler: simple, enabled, inactive snap-id: EaXqgt1lyCaxKaQCU349mlodBkDCXRcg tracking: latest/stable refresh-date: today at 07:54 UTC channels: 1.21/stable: v1.21.3 2021-07-27 (2346) 191MB classic 1.21/candidate: v1.21.4 2021-08-20 (2407) 191MB classic 1.21/beta: v1.21.4 2021-08-20 (2407) 191MB classic 1.21/edge: v1.21.4 2021-08-23 (2427) 191MB classic latest/stable: v1.21.3 2021-07-28 (2346) 191MB classic latest/candidate: v1.22.1 2021-08-20 (2424) 195MB classic latest/beta: v1.22.1 2021-08-20 (2424) 195MB classic latest/edge: v1.22.1 2021-08-27 (2451) 195MB classic dqlite/stable: – dqlite/candidate: – dqlite/beta: – dqlite/edge: v1.16.2 2019-11-07 (1038) 189MB classic 1.22/stable: v1.22.0 2021-08-13 (2399) 195MB classic 1.22/candidate: v1.22.1 2021-08-27 (2450) 195MB classic 1.22/beta: v1.22.1 2021-08-27 (2450) 195MB classic 1.22/edge: v1.22.1 2021-08-27 (2450) 195MB classic 1.20/stable: v1.20.9 2021-08-01 (2361) 221MB classic 1.20/candidate: v1.20.10 2021-08-19 (2409) 221MB classic 1.20/beta: v1.20.10 2021-08-19 (2409) 221MB classic 1.20/edge: v1.20.10 2021-08-12 (2409) 221MB classic 1.19/stable: v1.19.13 2021-07-26 (2339) 216MB classic 1.19/candidate: v1.19.14 2021-08-19 (2408) 216MB classic 1.19/beta: v1.19.14 2021-08-19 (2408) 216MB classic 1.19/edge: v1.19.14 2021-08-12 (2408) 216MB classic 1.18/stable: v1.18.20 2021-07-12 (2271) 198MB classic 1.18/candidate: v1.18.20 2021-07-12 (2271) 198MB classic 1.18/beta: v1.18.20 2021-07-12 (2271) 198MB classic 1.18/edge: v1.18.20 2021-06-16 (2271) 198MB classic 1.17/stable: v1.17.17 2021-01-15 (1916) 177MB classic 1.17/candidate: v1.17.17 2021-01-14 (1916) 177MB classic 1.17/beta: v1.17.17 2021-01-14 (1916) 177MB classic 1.17/edge: v1.17.17 2021-01-13 (1916) 177MB classic 1.16/stable: v1.16.15 2020-09-12 (1671) 179MB classic 1.16/candidate: v1.16.15 2020-09-04 (1671) 179MB classic 1.16/beta: v1.16.15 2020-09-04 (1671) 179MB classic 1.16/edge: v1.16.15 2020-09-02 (1671) 179MB classic 1.15/stable: v1.15.11 2020-03-27 (1301) 171MB classic 1.15/candidate: v1.15.11 2020-03-27 (1301) 171MB classic 1.15/beta: v1.15.11 2020-03-27 (1301) 171MB classic 1.15/edge: v1.15.11 2020-03-26 (1301) 171MB classic 1.14/stable: v1.14.10 2020-01-06 (1120) 217MB classic 1.14/candidate: ↑ 1.14/beta: ↑ 1.14/edge: v1.14.10 2020-03-26 (1303) 217MB classic 1.13/stable: v1.13.6 2019-06-06 (581) 237MB classic 1.13/candidate: ↑ 1.13/beta: ↑ 1.13/edge: ↑ 1.12/stable: v1.12.9 2019-06-06 (612) 259MB classic 1.12/candidate: ↑ 1.12/beta: ↑ 1.12/edge: ↑ 1.11/stable: v1.11.10 2019-05-10 (557) 258MB classic 1.11/candidate: ↑ 1.11/beta: ↑ 1.11/edge: ↑ 1.10/stable: v1.10.13 2019-04-22 (546) 222MB classic 1.10/candidate: ↑ 1.10/beta: ↑ 1.10/edge: ↑ installed: v1.21.3 (2346) 191MB classic
snap install microk8s --channel=1.14/beta --classic
root@kubernetes:~# microk8s enable ADDON -- --help Addon ADDON does not yet have a help message. For more information about it, visit https://microk8s.io/docs/addons
启用组件
microk8s enable dashboard dns ingress istio registry storage
microk8s 只是最精简的安装,所以只有 api-server, controller-manager, scheduler, kubelet, cni, kube-proxy 被安装运行。额外的服务比如 kube-dns, dashboard 可以通过 microk8s.enable 启动
可用的扩展
dns dashboard storage ingress gpu istio registry metrics-server
microk8s enable dashboard
root@kubernetes:~# microk8s enable dashboard Enabling Kubernetes Dashboard Addon metrics-server is already enabled. Applying manifest serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubernetes-dashboard-certs created secret/kubernetes-dashboard-csrf created secret/kubernetes-dashboard-key-holder created configmap/kubernetes-dashboard-settings created role.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created If RBAC is not enabled access the dashboard using the default token retrieved with: token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1) microk8s kubectl -n kube-system describe secret $token In an RBAC enabled setup (microk8s enable RBAC) you need to create a user with restricted permissions as shown in: https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
microk8s dashboard-proxy
为了不和已经安装的 kubectl 产生冲突,microk8s 有自己的 microk8s.kubectl 命令
microk8s.kubectl get services
如果本地没有 kubectl 命令可以增加一个别名
snap alias microk8s.kubectl kubectl
取消别名
snap unalias kubectl
API 服务监听 8080 端口
microk8s.kubectl config view
root@kubernetes:~# microk8s kubectl get all --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system pod/calico-kube-controllers-f7868dd95-xrt2w 0/1 Pending 0 83m kube-system pod/metrics-server-8bbfb4bdb-6m92q 0/1 Pending 0 74m kube-system pod/calico-node-vpsbv 0/1 Init:0/3 0 83m kube-system pod/kubernetes-dashboard-85fd7f45cb-w824z 0/1 Pending 0 114s kube-system pod/dashboard-metrics-scraper-78d7698477-g5b5k 0/1 Pending 0 114s NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 83m kube-system service/metrics-server ClusterIP 10.152.183.99 <none> 443/TCP 74m kube-system service/kubernetes-dashboard ClusterIP 10.152.183.225 <none> 443/TCP 114s kube-system service/dashboard-metrics-scraper ClusterIP 10.152.183.11 <none> 8000/TCP 114s NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE kube-system daemonset.apps/calico-node 1 1 0 1 0 kubernetes.io/os=linux 83m NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE kube-system deployment.apps/calico-kube-controllers 0/1 1 0 83m kube-system deployment.apps/metrics-server 0/1 1 0 74m kube-system deployment.apps/kubernetes-dashboard 0/1 1 0 114s kube-system deployment.apps/dashboard-metrics-scraper 0/1 1 0 114s NAMESPACE NAME DESIRED CURRENT READY AGE kube-system replicaset.apps/calico-kube-controllers-f7868dd95 1 1 0 83m kube-system replicaset.apps/metrics-server-8bbfb4bdb 1 1 0 74m kube-system replicaset.apps/kubernetes-dashboard-85fd7f45cb 1 1 0 114s kube-system replicaset.apps/dashboard-metrics-scraper-78d7698477 1 1 0 114s