K3s - 轻量级 Kubernetes

http://docs.rancher.cn/docs/k3s/_index

https://github.com/k3s-io/k3s/releases
https://github.com/k3s-io/k3s-ansible

image.png

https://docs.rancher.cn/docs/k3s/_index

为什么叫 K3s?

我们希望安装的 Kubernetes 在内存占用方面只是一半的大小。Kubernetes 是一个 10 个字母的单词,简写为 K8s。所以,有 Kubernetes 一半大的东西就是一个 5 个字母的单词,简写为 K3s。K3s 没有全称,也没有官方的发音

K3s - 图2

K3s - 图3

image.png

K3s - 图5
https://www.cnblogs.com/k3s2019/p/13646252.html

https://rancher2.docs.rancher.cn/docs/k3s/_index

K3s 是一个完全符合 Kubernetes 的发行版,有以下增强功能。

  • 打包为单个二进制文件。
  • 基于 sqlite3 的轻量级存储后端作为默认存储机制。 etcd3,MySQL,Postgres 仍然可用。
  • 封装在简单的启动程序中,该启动程序处理很多复杂的 TLS 和选项。
  • 默认情况下是安全的,对轻量级环境有合理的默认值。
  • 添加了简单但功能强大的“batteries-included”功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik ingress controller。
  • 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中。这使 K3s 可以自动化和管理复杂的集群操作,例如分发证书。
  • 外部依赖性已最小化(仅需要现代内核和 cgroup 挂载)。 K3s 软件包需要依赖项,包括:
    • containerd
    • Flannel
    • CoreDNS
    • CNI
    • 主机实用程序 (iptables, socat, etc)
    • Ingress controller (traefik)
    • 嵌入式 service loadbalancer
    • 嵌入式 network policy controller

面向DevOps的K3s托管服务.pdf

Master

  1. curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" sh -s - server

Node

  1. curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" K3S_URL=https://192.168.15.252:6443 K3S_TOKEN=K10bb35019b1669197e06f97b6c14bb3b3c7c7076cd20afe1f550d6793d02b9eed8::server:9599c8b3ffbbd38b7721207183cd6a62 sh -

安装

  1. [root@rancher-server ~]# curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
  2. [INFO] Finding release for channel stable
  3. [INFO] Using v1.20.5+k3s1 as release
  4. [INFO] Downloading hash http://rancher-mirror.cnrancher.com/k3s/v1.20.5-k3s1/sha256sum-amd64.txt
  5. [INFO] Downloading binary http://rancher-mirror.cnrancher.com/k3s/v1.20.5-k3s1/k3s
  6. [INFO] Verifying binary download
  7. [INFO] Installing k3s to /usr/local/bin/k3s
  8. Loaded plugins: fastestmirror, langpacks
  9. Loading mirror speeds from cached hostfile
  10. * base: mirrors.aliyun.com
  11. * extras: mirrors.aliyun.com
  12. * updates: mirrors.aliyun.com
  13. base | 3.6 kB 00:00:00
  14. docker-ce-stable | 3.5 kB 00:00:00
  15. extras | 2.9 kB 00:00:00
  16. updates | 2.9 kB 00:00:00
  17. (1/2): extras/7/x86_64/primary_db | 232 kB 00:00:00
  18. (2/2): updates/7/x86_64/primary_db | 7.1 MB 00:00:01
  19. Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version
  20. Nothing to do
  21. Loaded plugins: fastestmirror, langpacks
  22. Loaded plugins: fastestmirror, langpacks
  23. Loading mirror speeds from cached hostfile
  24. * base: mirrors.aliyun.com
  25. * extras: mirrors.aliyun.com
  26. * updates: mirrors.aliyun.com
  27. rancher-k3s-common-stable | 2.9 kB 00:00:00
  28. rancher-k3s-common-stable/primary_db | 2.2 kB 00:00:01
  29. Resolving Dependencies
  30. --> Running transaction check
  31. ---> Package k3s-selinux.noarch 0:0.3-0.el7 will be installed
  32. --> Finished Dependency Resolution
  33. Dependencies Resolved
  34. =================================================================================================================================================
  35. Package Arch Version Repository Size
  36. =================================================================================================================================================
  37. Installing:
  38. k3s-selinux noarch 0.3-0.el7 rancher-k3s-common-stable 14 k
  39. Transaction Summary
  40. =================================================================================================================================================
  41. Install 1 Package
  42. Total download size: 14 k
  43. Installed size: 82 k
  44. Downloading packages:
  45. warning: /var/cache/yum/x86_64/7/rancher-k3s-common-stable/packages/k3s-selinux-0.3-0.el7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID e257814a: NOKEY
  46. Public key for k3s-selinux-0.3-0.el7.noarch.rpm is not installed
  47. k3s-selinux-0.3-0.el7.noarch.rpm | 14 kB 00:00:01
  48. Retrieving key from https://rpm.rancher.io/public.key
  49. Importing GPG key 0xE257814A:
  50. Userid : "Rancher (CI) <ci@rancher.com>"
  51. Fingerprint: c8cf f216 4551 26e9 b9c9 18be 925e a29a e257 814a
  52. From : https://rpm.rancher.io/public.key
  53. Running transaction check
  54. Running transaction test
  55. Transaction test succeeded
  56. Running transaction
  57. Installing : k3s-selinux-0.3-0.el7.noarch 1/1
  58. Verifying : k3s-selinux-0.3-0.el7.noarch 1/1
  59. Installed:
  60. k3s-selinux.noarch 0:0.3-0.el7
  61. Complete!
  62. [INFO] Creating /usr/local/bin/kubectl symlink to k3s
  63. [INFO] Creating /usr/local/bin/crictl symlink to k3s
  64. [INFO] Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
  65. [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
  66. [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
  67. [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
  68. [INFO] systemd: Creating service file /etc/systemd/system/k3s.service
  69. [INFO] systemd: Enabling k3s unit
  70. [INFO] systemd: Starting k3s
  71. [root@rancher-server ~]# kubectl get node
  72. NAME STATUS ROLES AGE VERSION
  73. rancher-server NotReady control-plane,master 9s v1.20.5+k3s1
  74. [root@rancher-server ~]#
  75. [root@rancher-server ~]# kubectl get cs
  76. Warning: v1 ComponentStatus is deprecated in v1.19+
  77. NAME STATUS MESSAGE ERROR
  78. scheduler Healthy ok
  79. controller-manager Healthy ok
  80. [root@rancher-server ~]#
  81. [root@rancher-server ~]# kubectl get node
  82. NAME STATUS ROLES AGE VERSION
  83. rancher-server Ready control-plane,master 43s v1.20.5+k3s1
  1. [root@rancher-server ~]# kubectl -n kube-system get pod
  2. NAME READY STATUS RESTARTS AGE
  3. local-path-provisioner-5ff76fc89d-7ln66 1/1 Running 0 2m50s
  4. metrics-server-86cbb8457f-m78sj 1/1 Running 0 2m50s
  5. coredns-854c77959c-q2ffz 1/1 Running 0 2m50s
  6. helm-install-traefik-8kblc 0/1 Completed 0 2m50s
  7. svclb-traefik-pb78l 2/2 Running 0 111s
  8. traefik-6f9cbd9bd4-bcx6c 1/1 Running 0 111s
  9. [root@rancher-server ~]#
  1. [root@rancher-server ~]# kubectl -n kube-system get all
  2. NAME READY STATUS RESTARTS AGE
  3. pod/local-path-provisioner-5ff76fc89d-7ln66 1/1 Running 0 4m5s
  4. pod/metrics-server-86cbb8457f-m78sj 1/1 Running 0 4m5s
  5. pod/coredns-854c77959c-q2ffz 1/1 Running 0 4m5s
  6. pod/helm-install-traefik-8kblc 0/1 Completed 0 4m5s
  7. pod/svclb-traefik-pb78l 2/2 Running 0 3m6s
  8. pod/traefik-6f9cbd9bd4-bcx6c 1/1 Running 0 3m6s
  9. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  10. service/kube-dns ClusterIP 10.43.0.10 <none> 53/UDP,53/TCP,9153/TCP 4m19s
  11. service/metrics-server ClusterIP 10.43.112.206 <none> 443/TCP 4m18s
  12. service/traefik-prometheus ClusterIP 10.43.219.182 <none> 9100/TCP 3m6s
  13. service/traefik LoadBalancer 10.43.153.111 192.168.6.99 80:32445/TCP,443:30528/TCP 3m6s
  14. NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
  15. daemonset.apps/svclb-traefik 1 1 1 1 1 <none> 3m6s
  16. NAME READY UP-TO-DATE AVAILABLE AGE
  17. deployment.apps/local-path-provisioner 1/1 1 1 4m19s
  18. deployment.apps/metrics-server 1/1 1 1 4m18s
  19. deployment.apps/coredns 1/1 1 1 4m19s
  20. deployment.apps/traefik 1/1 1 1 3m6s
  21. NAME DESIRED CURRENT READY AGE
  22. replicaset.apps/local-path-provisioner-5ff76fc89d 1 1 1 4m5s
  23. replicaset.apps/metrics-server-86cbb8457f 1 1 1 4m5s
  24. replicaset.apps/coredns-854c77959c 1 1 1 4m5s
  25. replicaset.apps/traefik-6f9cbd9bd4 1 1 1 3m6s
  26. NAME COMPLETIONS DURATION AGE
  27. job.batch/helm-install-traefik 1/1 60s 4m16s
  28. [root@rancher-server ~]# kubectl get ns
  29. NAME STATUS AGE
  30. default Active 4m38s
  31. kube-system Active 4m38s
  32. kube-public Active 4m38s
  33. kube-node-lease Active 4m38s
  34. [root@rancher-server ~]#

卸载

  1. 卸载K3S
  2. #服务器
  3. /usr/local/bin/k3s-uninstall.sh
  4. #工作节点
  5. /usr/local/bin/k3s-agent-uninstall.sh