master节点安装
安装参数配置,如果不指定版本,则安装最新版
export INSTALL_K3S_VERSION=v1.22.13+k3s1
# 使用docker作为运行时容器
export INSTALL_K3S_EXEC="--docker"
# 使用阿里云镜像源安装
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | sh -
[root@master ~]# curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | sh - [INFO] Using v1.22.13+k3s1 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.22.13+k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.22.13+k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Finding available k3s-selinux versions
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[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 from /etc/systemd/system/multi-user.target.wants/k3s.service to /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
查看启动状态:
[root@master ~]# systemctl status k3s
● k3s.service - Lightweight Kubernetes
Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: disabled)
Active: active (running) since 六 2023-06-24 15:22:21 CST; 5min ago
Docs: https://k3s.io
Process: 27428 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Process: 27425 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
Process: 27422 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exited, status=0/SUCCESS)
Main PID: 27431 (k3s-server)
Tasks: 132
Memory: 1.1G
CGroup: /system.slice/k3s.service
├─27431 /usr/local/bin/k3s server
├─27460 containerd
├─28499 /var/lib/rancher/k3s/data/8b526847b7c1f339a0878b18029f581027f82097c5128778df15dd816a058bda/bin/containerd-shim-runc-v2...
├─28579 /var/lib/rancher/k3s/data/8b526847b7c1f339a0878b18029f581027f82097c5128778df15dd816a058bda/bin/containerd-shim-runc-v2...
├─28599 /var/lib/rancher/k3s/data/8b526847b7c1f339a0878b18029f581027f82097c5128778df15dd816a058bda/bin/containerd-shim-runc-v2...
├─31162 /var/lib/rancher/k3s/data/8b526847b7c1f339a0878b18029f581027f82097c5128778df15dd816a058bda/bin/containerd-shim-runc-v2...
└─31230 /var/lib/rancher/k3s/data/8b526847b7c1f339a0878b18029f581027f82097c5128778df15dd816a058bda/bin/containerd-shim-runc-v2...
......
查看节点信息:
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 6m2s v1.22.13+k3s1
执行脚本之后会在文件夹 /usr/local/bin 生成以下文件:
[root@master ~]# ls /usr/local/bin
crictl k3s k3s-killall.sh k3s-uninstall.sh kubectl
slave节点安装
先在master查看token
[root@master ~]# cat /var/lib/rancher/k3s/server/node-token
K10523c2cdab5b4976be8887aaa5cd41a4e4cb148defe513228b08d97fd79d9131a::server:ca92b29bfe826d07162d8e0d693723c1
# master URL设置
export K3S_URL=https://192.168.43.180:6443
# master生成的token
export K3S_TOKEN=K10523c2cdab5b4976be8887aaa5cd41a4e4cb148defe513228b08d97fd79d9131a::server:ca92b29bfe826d07162d8e0d693723c1
# 版本
export INSTALL_K3S_VERSION=v1.22.13+k3s1
# 使用docker作为运行时容器
export INSTALL_K3S_EXEC="--docker"
# 使用阿里云镜像源安装
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | sh -
slave2跟slave1一样的步骤
[root@slave2 ~]# curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | sh -
[INFO] Using v1.22.13+k3s1 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.22.13+k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.22.13+k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Finding available k3s-selinux versions
[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-agent-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service
[INFO] systemd: Enabling k3s-agent unit
Created symlink from /etc/systemd/system/multi-user.target.wants/k3s-agent.service to /etc/systemd/system/k3s-agent.service.
[INFO] systemd: Starting k3s-agent
在 master 节点上查看节点信息:
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 39m v1.22.13+k3s1
slave1 Ready <none> 3m5s v1.22.13+k3s1
slave2 Ready <none> 106s v1.22.13+k3s1
查看生成的文件:
[root@slave1 ~]# ls /usr/local/bin
crictl ctr k3s k3s-agent-uninstall.sh k3s-killall.sh kubectl
[root@slave2 ~]# ls /usr/local/bin
crictl ctr k3s k3s-agent-uninstall.sh k3s-killall.sh kubectl
测试k3s是否安装成功
查看 k3s 安装之后容器内存在的pod:
[root@master ~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7796b77cd4-t45lt 1/1 Running 0 40m
kube-system local-path-provisioner-84bb864455-4lh8z 1/1 Running 0 40m
kube-system metrics-server-ff9dbcb6c-7fss5 1/1 Running 0 40m
kube-system helm-install-traefik-crd-bwpxs 0/1 Completed 0 40m
kube-system helm-install-traefik-knf6n 0/1 Completed 2 40m
kube-system svclb-traefik-mg9f4 2/2 Running 0 37m
kube-system traefik-d497b4cb6-8w7d2 1/1 Running 0 37m
kube-system svclb-traefik-qdfzg 2/2 Running 0 4m18s
kube-system svclb-traefik-klx4f 2/2 Running 0 2m59s
pod 的状态为 Running 和 Completed 说明安装成功。
如果出现问题请使用下面的命令查看具体的错误信息:
查看pod详情
kubectl describe pod PodName
查看 pod log
kubectl logs PodName
验证k3s环境,在 k3s 集群中创建一个 pod,验证是否正常运行。
创建一个nginx镜像
[root@master ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
设置对外暴露端口
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@master ~]# kubectl get pods,svc -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/nginx-6799fc88d8-c92v4 1/1 Running 0 2m25s 10.42.1.3 slave1 <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 54m <none>
service/nginx NodePort 10.43.219.172 <none> 80:32426/TCP 2m8s app=nginx
slave1上查看镜像
[root@slave1 ~]# ctr images list | grep nginx
docker.io/library/nginx:latest application/vnd.docker.distribution.manifest.list.v2+json sha256:593dac25b7733ffb7afe1a72649a43e574778bf025ad60514ef40f6b5d606247 67.3 MiB linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64/v8,linux/mips64le,linux/ppc64le,linux/s390x io.cri-containerd.image=managed
docker.io/library/nginx@sha256:593dac25b7733ffb7afe1a72649a43e574778bf025ad60514ef40f6b5d606247 application/vnd.docker.distribution.manifest.list.v2+json sha256:593dac25b7733ffb7afe1a72649a43e574778bf025ad60514ef40f6b5d606247 67.3 MiB linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64/v8,linux/mips64le,linux/ppc64le,linux/s390x io.cri-containerd.image=managed
发送curl请求
[root@master ~]# curl http://192.168.43.180:32426/
[root@master ~]# curl http://192.168.43.181:32426/
[root@master ~]# curl http://192.168.43.182:32426/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
卸载 K3s
如果你使用 install.sh 脚本安装了 k3s,那么在安装过程中会生成一个卸载脚本。该脚本在您的节点上的
/usr/local/bin/ 目录下:
[root@master ~]# ls /usr/local/bin/
crictl k3s k3s-killall.sh k3s-uninstall.sh kubectl
[root@slave1 ~]# ls /usr/local/bin/
crictl ctr k3s k3s-agent-uninstall.sh k3s-killall.sh kubectl
[root@slave2 ~]# ls /usr/local/bin/
crictl ctr k3s k3s-agent-uninstall.sh k3s-killall.sh kubectl
卸载master节点
./k3s-uninstall.sh
卸载slave节点
./k3s-agent-uninstall.sh