1. 更新 apt

apt update
apt upgrade -y

2. 安装microk8s(1.23版本)

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

2.1. 设置别名(可选,方便操作)

# 后续都使用的别名,需要注意识别
sudo snap alias microk8s mk8s
sudo snap alias microk8s.kubectl kc

3. 赋予脚本权限并执行images.sh脚本(目前自测该脚适配 1.23版本)

vim images.sh
#!/bin/bash
images=(
k8s.gcr.io/pause:3.1=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1
k8s.gcr.io/metrics-server/metrics-server:v0.5.2=registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2
k8s.gcr.io/ingress-nginx/controller:v1.1.0=registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.0
)

OIFS=$IFS;

for image in ${images[@]};do
IFS==set $image
microk8s.ctr image pull $2
microk8s.ctr image tag $2 $1
microk8s.ctr image rm $2
IFS=$OIFS;
done
sudo chmod 777 images.sh
./images.sh

4. 重启microk8s

mk8s stop
mk8s start

5. 状态查看

5.1. 查看运行状态及可用功能

mk8s status

5.2. 启用功能(根据需要启用)

mk8s enable dns rbac dashboard ingress
  • 如果ingress安装时查看信息提示找不到镜像,查看Q1解决办法。

6. pod相关

6.1. 查看pod信息

都是running就是正常的

kc get po -n [namespace]

6.2. 查看单个pod的log

sudo kc describe pods [pot name] -n [namespace]

7. Dashboard相关

7.1. 修改web的端口

# 通过编辑命令打开yaml文件编辑界面
kc edit svc -n kube-system  kubernetes-dashboard
# 在spec节点下添加 externalIPs 可以开启ip访问
spec: 
  externalIPs:
    - xxx.xxx.xxx.xxx

7.2. 访问页面

https://ip:443
  • 因为没有SSL证书认证,所以直接点高级,再点继续前往。

7.3. 获取token,登录Dashboard(如果安装了rbac看7.4)

mk8s dashboard-proxy

7.4. rbac管理下登录dashboard

7.4.1. 编写yaml文件并应用

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
kc apply -f <yaml文件路径>

7.4.2. 获取admin-user的token

kc -n kube-system describe secret $(microk8s.kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

8.集群相关

8.1. 添加节点

# 在主节点执行,获取在其他节点执行加入节点的命令
mk8s add-node

  • 获取到添加到集群的命令(后面带 --worker 的将被添加为工作节点)
  • v1.20以上版本有三个非worker节点可以自动开启高可用

9. 相关配置修改

9.1. 修改Sandbox Image

# 编辑配置文件
vim /var/snap/microk8s/current/args/containerd-template.toml
# 将sandbox_image从"k8s.gcr.io/pause:3.1"修改为
sandbox_image = "registry.cn-shenzhen.aliyuncs.com/juxuny-google-containers/pause:3.1"

9.2. 修改microk8s 里面 DNS 服务

# 1.进入配置文件
kc -n kube-system edit configmap/coredns
# 2.修改 8.8.8.8 和 8.8.4.4 为需要的 DNS

附:问题及解决方法

Q1:开启 ingress 报找不到镜像问题

A1:外部导入镜像

# 1. 安装docker用来下载镜像包
sudo snap install docker
# 2. 检查缺少的包有哪些
sudo pullk8s check --microk8s
# 3. 使用 pullk8s 拉取失败的镜像,并导入到 pod 空间中
sudo pullk8s pull [步骤2中返回的镜像名称] --microk8s
# 注:集群情况下可能需要每个节点解决一下.

Q2:安装helm3速度慢问题

A1:修改自带的安装脚本

#!/usr/bin/env bash

set -e
# 添加参数配置
SNAP=/snap/microk8s/3699
SNAP_DATA=/var/snap/microk8s/3699

source $SNAP/actions/common/utils.sh
CA_CERT=/snap/core18/current/etc/ssl/certs/ca-certificates.crt

echo "Enabling Helm 3"

if [ ! -f "${SNAP_DATA}/bin/helm3" ]
then
  # 修改为 华为源
  SOURCE_URI="https://mirrors.huaweicloud.com/helm/v3.5.0/"
  # 修改版本
  HELM_VERSION="v3.5.0"

  echo "Fetching helm version $HELM_VERSION."
  run_with_sudo mkdir -p "${SNAP_DATA}/tmp/helm"
  (cd "${SNAP_DATA}/tmp/helm"
  # 修改为 linux-amd64
  run_with_sudo "${SNAP}/usr/bin/curl" --cacert $CA_CERT -L $SOURCE_URI/helm-$HELM_VERSION-linux-amd64.tar.gz -o "$SNAP_DATA/tmp/helm/helm.tar.gz"
  run_with_sudo gzip -f -d "$SNAP_DATA/tmp/helm/helm.tar.gz"
  run_with_sudo tar -xf "$SNAP_DATA/tmp/helm/helm.tar")

  run_with_sudo mkdir -p "$SNAP_DATA/bin/"
  # 修改为 linux-amd64
  run_with_sudo mv "$SNAP_DATA/tmp/helm/linux-amd64/helm" "$SNAP_DATA/bin/helm3"
  run_with_sudo chmod +x "$SNAP_DATA/bin/"
  run_with_sudo chmod +x "$SNAP_DATA/bin/helm3"

  run_with_sudo rm -rf "$SNAP_DATA/tmp/helm"
fi

echo "Helm 3 is enabled"

相关文章
Microk8s 安装 与使用指南 – 张善友

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐