下载docker

export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
# 如您使用 curl
curl -fsSL https://raw.githubusercontent.com/docker/docker-install/master/install.sh | sh
# 如您使用 wget
wget -O- https://raw.githubusercontent.com/docker/docker-install/master/install.sh | sh
[root@k3s-master ~]# systemctl enable docker --now
[root@k3s-master ~]# docker info
Client: Docker Engine - Community
 Version:    26.1.4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.27.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 6
  Running: 6
  Paused: 0
  Stopped: 0
 Images: 4
 Server Version: 26.1.4
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-1160.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 972.3MiB
 Name: k3s-master
 ID: a6306f11-b431-4441-8c97-7e6f1fd0d547
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

下载离线包

# k3s安装脚本
wget https://rancher-mirror.rancher.cn/k3s/k3s-install.sh
# k3s二进制文件
wget https://rancher-mirror.rancher.cn/k3s/v1.30.2-k3s2/k3s-images.txt
wget https://rancher-mirror.rancher.cn/k3s/v1.30.2-k3s2/k3s
# k3s依赖的镜像
wget https://rancher-mirror.rancher.cn/k3s/v1.30.2-k3s2/k3s-airgap-images-amd64.tar.gz

注意:以上三个组件都可以通过K3s Release页面(github地址)下载,如果在国内使用,推荐从 国内地址 获得这些组件。

sudo docker load -i /root/k3s-airgap-images-amd64.tar

权限设置

sudo chmod a+x ./k3s ./k3s-install.sh
sudo cp ./k3s /usr/local/bin/

master上执行命令

设置环境变量

export INSTALL_K3S_EXEC="--docker --disable=traefik --kube-apiserver-arg service-node-port-range=0-65535 --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"

--docker:指定使用 Docker 作为容器运行时。

--disable=traefik:禁用 ,Traefik 是 K3s 默认的 ingress controller(入口控制器)。

--kube-apiserver-arg service-node-port-range=0-65535:设置 Kubernetes API 服务器的服务节点端口范围为 0 到 65535,这可以增加可用的节点端口数量。

--write-kubeconfig ~/.kube/config:将 K3s 的配置文件写入到用户主目录下的.kube/config文件中,这样可以方便地使用kubectl等工具与 K3s 集群进行交互。

--write-kubeconfig-mode 666:设置写入的配置文件的权限模式为 666,这意味着该文件对于所有者、所属组和其他用户都具有读写权限。

INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh

将会安装kubectlcrictlctrk3s-killall.shk3s-uninstall.sh

image-20240828210615313

将kubeconfig文件写入到/etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将自动使用该文件

[root@k3s-master ~]# ll /etc/rancher/k3s/k3s.yaml
lrwxrwxrwx 1 root root 18 Aug 28 20:57 /etc/rancher/k3s/k3s.yaml -> /root/.kube/config

work节点上执行命令

设置K3S_URL参数会使 K3s 以 worker 模式运行。K3s agent 将在所提供的 URL 上向监听的 K3s 服务器注册。K3S_TOKEN使用的值存储在你的服务器节点上的/var/lib/rancher/k3s/server/node-token路径下。

**注意:**每台计算机必须具有唯一的主机名。如果您的计算机没有唯一的主机名,请传递K3S_NODE_NAME环境变量,并为每个节点提供一个有效且唯一的主机名。

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='--docker' K3S_URL=https://xxx:6443 K3S_TOKEN=token ./k3s-install.sh

image-20240828225123380