简介

轻量级 Kubernetes。安装简单,内存只有一半,所有的二进制都不到 100MB。

k3s集群部署

什么是K3s

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

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

    • containerd
    • Flannel
    • CoreDNS
    • CNI
    • 主机实用程序 (iptables, socat, etc)
    • Ingress controller (traefik)
    • 嵌入式 service loadbalancer
    • 嵌入式 network policy controller

为什么叫 K3s?

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

环境

系统:Centos7
Master:2H2G
Node:2H1G

安装前猪准备

端口

协议端口描述
TCP6443K3s agent 节点Kubernetes API
UDP8472K3s server 和 agent 节点R 仅对 Flannel VXLAN 需要
TCP10250K3s server 和 agent 节点kubelet

*我这边是自己的测试环境,所以就直接把防火墙关了,生产环境请放行上述端口。

关闭防火墙

systemctl stop firewalld

关闭SELINUX

[root@la ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 

修改主机名

hostnamectl set-hostname la.svr.lian.st
hostnamectl set-hostname oracle-jp-1
hostnamectl set-hostname oracle-jp-2

安装K3S

Master

curl -sfL https://get.k3s.io | sh -
systemctl start k3s
systemctl status k3s

Node

两台node分别执行下面的命令加入k3s集群。

k3s_url="https://master-ip:6443/" 
k3s_token="K10235c114df226beae70871ab80e94ff02377136e227e075269a12e5a7120a05d6::server:02ba7f8e86c540608ec70f816706c27f"
curl -sfL https://get.k3s.io | K3S_URL=${k3s_url} K3S_TOKEN=${k3s_token} sh -

查看状态

Master

登陆master执行如下命令查看群集

[root@la ~]# kubectl config get-clusters
NAME
default
[root@la ~]# kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
[root@la ~]# kubectl get  nodes
NAME             STATUS   ROLES    AGE   VERSION
la.svr.lian.st   Ready    master   23h   v1.19.3+k3s3
oracle-jp-1      Ready    <none>   23h   v1.19.3+k3s3
oracle-jp-2      Ready    <none>   23h   v1.19.3+k3s3
[root@la ~]# kubectl get namespaces
NAME              STATUS   AGE
default           Active   23h
kube-system       Active   23h
kube-public       Active   23h
kube-node-lease   Active   23h
[root@la ~]# kubectl get endpoints -n kube-system
NAME                    ENDPOINTS                                  AGE
kube-dns                10.42.0.5:53,10.42.0.5:53,10.42.0.5:9153   23h
metrics-server          10.42.0.3:443                              23h
traefik                 10.42.0.6:443,10.42.0.6:80                 23h
traefik-prometheus      10.42.0.6:9100                             23h
rancher.io-local-path   <none>                                     23h
[root@la ~]# kubectl get pods -n kube-system
NAME                                     READY   STATUS      RESTARTS   AGE
coredns-66c464876b-plmpz                 1/1     Running     0          23h
local-path-provisioner-7ff9579c6-b2l6h   1/1     Running     5          23h
metrics-server-7b4f8b595-pntrb           1/1     Running     5          23h
helm-install-traefik-mnnc5               0/1     Completed   5          23h
svclb-traefik-l5kkc                      2/2     Running     0          23h
traefik-5dd496474-drglt                  1/1     Running     0          23h
svclb-traefik-xb5p8                      2/2     Running     0          23h
svclb-traefik-tm4mf                      2/2     Running     0          23h

查看crictl

[root@la ~]# crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                     ATTEMPT             POD ID
a0d277d944f0f       aa764f7db3051       24 hours ago        Running             traefik                  0                   d901b8d037c60
6a8c2e042b759       897ce3c5fc8ff       24 hours ago        Running             lb-port-443              0                   060080b214c82
fd4ec1592776c       897ce3c5fc8ff       24 hours ago        Running             lb-port-80               0                   060080b214c82
874ef012c371d       9dd718864ce61       24 hours ago        Running             metrics-server           5                   6ebb911f70806
a07c00dbf117a       e422121c9c5f9       24 hours ago        Running             local-path-provisioner   5                   da755a84fb168
88090d40c4757       4e797b3234604       24 hours ago        Running             coredns                  0                   e4f2d5f67b23d

参考资料

文章目录