k3s国内源安装(无坑)

2023-04-14 10:13:06 浏览数 (1)

1 简介

本文使用 mac multipass 虚拟出的 ubuntu 系统, multpass介绍请看下面这个链接文档,也是亲自实践无坑;

https://cloud.tencent.com/developer/article/2264277?areaSource=&traceId= (mac 平台使用 multipass 安装 ubuntu 虚拟机)

Lightweight Kubernetes. Production ready, easy to install, half the memory, all in a binary less than 100 MB.

K3s 是一个高可用的、经过 CNCF 认证的轻量级 Kubernetes 发行版,专为物联网及边缘计算设计。

k3s 将安装 Kubernetes 所需的一切打包进仅有 60MB 大小的二进制文件中,并且完全实现了 Kubernetes API。为了减少运行 Kubernetes 所需的内存,k3s 删除了很多不必要的驱动程序,并用附加组件对其进行替换。由于它只需要极低的资源就可以运行,因此它能够在任何 512MB 内存以上的设备上运行集群。

2 国内源安装

代码语言:javascript复制
ubuntu@vm01:~$ 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
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: xn--sfl-1n0a
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 32273  100 32273    0     0   123k      0 --:--:-- --:--:-- --:--:--  124k
[INFO]  Finding release for channel stable
[INFO]  Using v1.26.3 k3s1 as release
[INFO]  Downloading hash rancher-mirror.rancher.cn/k3s/v1.26.3-k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary rancher-mirror.rancher.cn/k3s/v1.26.3-k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Skipping installation of SELinux RPM
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Creating /usr/local/bin/ctr symlink to k3s
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
/usr/sbin/iptables-save
/usr/sbin/iptables-restore
/usr/sbin/ip6tables-save
/usr/sbin/ip6tables-restore
[INFO]  systemd: Starting k3s

如果你的带宽充足,一分钟之内即可完成 K3s 的安装和系统服务的启动,然后可以通过执行kubectl get pods -n kube-system 来验证

2.1 验证

代码语言:javascript复制
ubuntu@vm01:~$ kubectl get pods -n kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
local-path-provisioner-858c864885-vktw4   1/1     Running   0          89s
coredns-6c4b5c5567-c77wf                  1/1     Running   0          89s
metrics-server-5d7f9fc86-f6hhh            1/1     Running   0          89s

2.2 配置 containerd 的 mirror

以上这些步骤只是为了加速 K3s 的安装和启动。启动 K3s 后你可能会在 K3s 上部署自己的业务(例如 nginx),而这些镜像默认也是从 DockerHub 拉取。如果使用 docker 容器运行时,你可能会在 docker 上配置 mirror 来加速镜像的拉取。

K3s 默认使用的 containerd 容器运行时。而且,可以通过 K3s 的参数来设置 containerd 的 mirror,设置方式如下:

代码语言:javascript复制
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

systemctl restart k3s

3 验证k3s

3.1 检查集群

代码语言:javascript复制
# 查看集群运行情况
kubectl get nodes -o wide
kubectl get all -A -owide
kubectl describe node vm01
kubectl -n kube-system describe deploy coredns

3.2 启动 whoami 服务

代码语言:javascript复制
# 快速部署 whoami 应用,指定副本为 2,默认副本为 1
kubectl create deploy whoami --image=traefik/whoami --replicas=2
kubectl describe deploy whoami
# 监控 pod 状态,通过扩缩容可直观看到 pod 的调度情况
kubectl get pods --watch
# 尝试下对 whoami 应用进行扩缩容
kubectl scale deploy whoami --replicas=5

k8s 请求链路

代码语言:javascript复制
request public-ip -> node-port -> svc-port -> pod-port -> container

3.3 验证 service

默认 nodeport模式,节点监听

代码语言:javascript复制
kubectl expose deploy whoami --port=80
kubectl get svc -owide
kubectl describe svc whoami

# 在本地通过 service 多访问几次,出轮询访问 container
# curl http://<external-ip>:<port>
root@vm01:~# curl `kubectl get -o template service/whoami --template='{{.spec.clusterIP}}'`
Hostname: whoami-7c88bd4c6f-bwhdj
IP: 127.0.0.1
IP: ::1
IP: 10.42.0.9
IP: fe80::742a:5bff:fe94:6450
RemoteAddr: 10.42.0.1:55533
GET / HTTP/1.1
Host: 10.43.19.74
User-Agent: curl/7.81.0
Accept: */*

LoadBalancer 模式指定公网IP

代码语言:javascript复制
# 自行替换 <PUBLIC_IP> 为当前节点的公网 IP
kubectl expose deploy whoami --type=LoadBalancer --port=80 --external-ip <PUBLIC_IP>

3.4 清理测试环境

代码语言:javascript复制
kubectl delete all --all

4 卸载k3s

代码语言:javascript复制
# 一键卸载 server
k3s-uninstall.sh

# 一键卸载 agent
k3s-agent-uninstall.sh

0 人点赞