完整的 K8s 环境需要占用的资源比较多,学习的时候可以用 k3s、minikube、kind 代替,这三者的区别本文不做对比,主要介绍k3s。
一、什么是k3s
官网对它的描述是”Lightweight Kubernetes“即轻量化Kubernetes,是为物联网和边缘计算打造的经认证的Kubernetes发行版。
二、官方版本的安装
官方的安装脚本:
# curl -sfL https://get.k3s.io | sh -
[INFO] Finding release for channel stable
[INFO] Using v1.25.3+k3s1 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.25.3+k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.25.3+k3s1/k3s
[INFO] Verifying binary download
...
...
[INFO] systemd: Starting k3s
如果从国内环境安装 K3s 可能会遇到安装速度特别缓慢或者 time out 的情况,从以上的安装过程可以分析出以下几个原因:
- K3s 的安装脚本 存储在国外的服务器,从国内环境访问可能出现无法访问的情况。
- K3s 默认安装 stable 版本,stable 对应的具体 K3s 版本是通过 update.k3s.io/v1-release/… 解析来的,而这个地址也是运行在一个国外的服务器上。
- 当通过 channel 解析出对应 K3s 的版本为:v1.25.3+k3s1,此时需要到 github 上拉取对应的 K3s 二进制文件。虽然这个二进制文件才几十兆,但国内环境访问 github 经常会出现无法访问的情况。
三、使用国内源进行安装
# curl –sfL \
https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | \
INSTALL_K3S_MIRROR=cn sh -s - \
--system-default-registry "registry.cn-hangzhou.aliyuncs.com" \
--write-kubeconfig ~/.kube/config \
--write-kubeconfig-mode 666 \
--disable traefik
[INFO] Finding release for channel stable
[INFO] Using v1.25.3+k3s1 as release
[INFO] Downloading hash rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.25.3-k3s1/sha256sum-amd64.txt
[INFO] Downloading binary rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.25.3-k3s1/k3s
[INFO] Verifying binary download
...
...
[INFO] systemd: Starting k3s
首先,安装 K3s 使用的是存储在阿里云对象存储上的 K3s 安装脚本,并且使用存储在国内 channel 去解析对应的 K3s 版本。
其次,通过 INSTALL_K3S_MIRROR=cn 环境变量来指定 K3s 的二进制文件从国内的阿里云对象存储上去拉取。
最后,通过--system-default-registry参数来指定 K3s 的系统镜像从国内的阿里云镜像仓库(去拉取。
如果你的带宽充足,一分钟之内即可完成 K3s 的安装和系统服务的启动,然后可以通过执行kubectl get pods -n kube-system 来验证
# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-7c855cf8c6-x6d77 1/1 Running 0 7m55s
# kubectl describe pods coredns-7c855cf8c6-x6d77 -n kube-system
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 7m44s default-scheduler Successfully assigned kube-system/coredns-7c855cf8c6-x6d77 to k3s3
Normal Pulling 7m40s kubelet Pulling image "registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-coredns-coredns:1.9.1"
Normal Pulled 7m6s kubelet Successfully pulled image "registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-coredns-coredns:1.9.1" in 34.050826086s
Normal Created 7m6s kubelet Created container coredns
Normal Started 7m6s kubelet Started container coredns
四、配置containerd 的 Mirror
以上这些步骤只是为了加速 K3s 的安装和启动。启动 K3s 后你可能会在 K3s 上部署自己的业务(例如 nginx),而这些镜像默认也是从 DockerHub 拉取。如果使用 docker 容器运行时,你可能会在 docker 上配置 mirror 来加速镜像的拉取。
K3s 默认使用的 containerd 容器运行时。而且,可以通过 K3s 的参数来设置 containerd 的 mirror,设置方式如下:
cat > /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
docker.io:
endpoint:
- "http://hub-mirror.c.163.com"
- "https://docker.mirrors.ustc.edu.cn"
- "https://registry.docker-cn.com"
EOF
五、enjoy
至此,你应该完成了k3s环境的安装,可以正式步入k8s的大门了 : )
引用: