Install microk8s on Ubuntu 20.04

542 阅读2分钟

Install snap

sudo apt update && sudo apt install snapd
# 没有启动snapd的话,需要先启动一下snapd服务
sudo service snapd start

Install microk8s

另外需要注册,机器的hostname不要有给下划线,不要有横线

sudo snap install microk8s --classic --channel=1.21

Join the group

sudo usermod -a -G microk8s ${USER}
sudo chown -f -R $USER ~/.kube

Create Alias for kubectl

alias kubectl='microk8s kubectl'
echo "alias kubectl='microk8s kubectl'" >> ~/.bash_aliases

修改Sandbox Image

默认的puase镜像是google提供的,国内一般拉不下来。现在用vim编辑/var/snap/microk8s/current/args/containerd-template.toml这个文件,把k8s.gcr.io/pause:3.1 替换为 registry.cn-shenzhen.aliyuncs.com/juxuny-google-containers/pause:3.1

sudo cp /var/snap/microk8s/current/args/containerd-template.toml /var/snap/microk8s/current/args/containerd-template.bk.toml
sudo cat /var/snap/microk8s/current/args/containerd-template.bk.toml |sed -e 's/k8s.gcr.io\/pause:3.1/registry.cn-shenzhen.aliyuncs.com\/juxuny-google-containers\/pause:3.1/g' > /var/snap/microk8s/current/args/containerd-template.toml

修改完就重启一下micok8s

sudo microk8s stop
sudo microk8s start

修改microk8s 里面 DNS 服务

microk8s enable dns
microk8s kubectl -n kube-system edit configmap/coredns
# 需要 rbac的话,这个时候启动,这个版本的microk8s有bug,之前试好多次启动rbac之后 node 变成了NotReady
# 另外需要注册,机器的hostname不要有给下划线,不要有横线
# microk8s enable rbac

把8.8.8.8 和 8.8.4.4 改成自己想要的DNS Server就可以了,阿里云 DNS: 223.5.5.5 223.6.6.6

默认配置信息如下:

apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health {
          lameduck 5s
        }
        ready
        log . {
          class error
        }
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . 8.8.8.8 8.8.4.4
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"Corefile":".:53 {\n    errors\n    health {\n      lameduck 5s\n    }\n    ready\n    log . {\n      class error\n    }\n    kubernetes cluster.local in-addr.arpa ip6.arpa {\n      pods insecure\n      fallthrough in-addr.arpa ip6.arpa\n    }\n    prometheus :9153\n    forward . 8.8.8.8 8.8.4.4\n    cache 30\n    loop\n    reload\n    loadbalance\n}\n"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"addonmanager.kubernetes.io/mode":"EnsureExists","k8s-app":"kube-dns"},"name":"coredns","namespace":"kube-system"}}
  creationTimestamp: "2021-06-20T10:01:55Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    k8s-app: kube-dns
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:Corefile: {}
      f:metadata:
        f:annotations:
          .: {}
          f:kubectl.kubernetes.io/last-applied-configuration: {}
        f:labels:
          .: {}
          f:addonmanager.kubernetes.io/mode: {}
          f:k8s-app: {}
    manager: kubectl
    operation: Update
    time: "2021-06-20T10:01:55Z"
  name: coredns
  namespace: kube-system
  resourceVersion: "38981300"
  selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
  uid: a5a21628-9b13-4fda-8b6f-d019f32b9d43