Ubuntu+k3s+karmada离线安装部署说明
一、环境说明
1)、软件说明
序号 | 软件名称 | 版本 | 作用 | 资源来源 |
---|---|---|---|---|
1 | vmware | 17.5.2 | 虚拟机模拟 | |
2 | Ubuntu | 20.04.6 LTS | 操作系统 | |
3 | k3s | v1.33.1 | github地址 | |
4 | karmada | v1.13.0 |
说明:
k3s和karmada的相关资源已经上传到【百度云盘】提取码: mt7a
2)、资源说明
本人机器资源如下:
序号 | 资源名称 | 大小 | 说明 |
---|---|---|---|
1 | cpu | 8u | i7-14700 |
2 | mem | 8GB | 5600MHZ |
3 | 磁盘 | 100GB | SDD |
3)、软件包说明
序号 | 包名 | 说明 |
---|---|---|
1 | k3s-airgap-images-amd64.tar | k3s官方给出的镜像包 |
2 | install.sh | k3s官方给出的安装脚本。 |
3 | karmada/karmada-images-amd64.tar.gz | karmada的镜像包 |
4 | karmada/其他 | 安装karmada的cli,dashboard,crds所需 |
4)、其他需要提前准备的
除了上述的内容,还要在环境中:
二、安装步骤
注意:vmware,Ubuntu,containerd的安装不再进行说明。需要确认现场是否已经安装好。
1、安装k3s
切换到root权限,将软件包:k3s-karmada.tar.gz放入服务器中。本文为:/home/k3s/images/。
1)、安装k3s客户端
mkdir -p /home/k3s/images/
tar -zxvf k3s-karmada.tar.gz#将相关资源放入该目录
sudo chmod +x k3s && sudo mv k3s /usr/local/bin/
2)、导入k3s需要镜像
k3s使用内置的cri非已有的docker或conainerd。故其加载镜像的方式也不一样。
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
注意:该目录不能改变。k3s启动时候回自动加载该目录的k3s镜像。
4)、执行自动化安装脚本
chmod +x install.sh
export INSTALL_K3S_SKIP_DOWNLOAD=true
./install.sh --disable traefik
执行过程回显如下:
root@ubuntu:/home/k3s/images# export INSTALL_K3S_SKIP_DOWNLOAD=true
root@ubuntu:/home/k3s/images# ./install.sh --disable traefik
[INFO] Skipping k3s download and verify
[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] 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 /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
验证
验证k3s安装结果
root@ubuntu:/home/k3s/images# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-697968c856-7wq9r 1/1 Running 0 63s
kube-system local-path-provisioner-774c6665dc-bnxxx 1/1 Running 0 63s
kube-system metrics-server-6f4c6675d5-p42rc 1/1 Running 0 63s
此时k3s镜像被加载:
root@ubuntu:/home/k3s/images# /usr/local/bin/crictl images
IMAGE TAG IMAGE ID SIZE
docker.io/rancher/klipper-helm v0.9.5-build20250306 ca208f9f2a84d 192MB
docker.io/rancher/klipper-lb v0.4.13 f7415d0003cb6 12.7MB
docker.io/rancher/local-path-provisioner v0.0.31 8309ed19e06b9 60.7MB
docker.io/rancher/mirrored-coredns-coredns 1.12.1 52546a367cc9e 76.1MB
docker.io/rancher/mirrored-library-busybox 1.36.1 2d61ae04c2b80 4.51MB
docker.io/rancher/mirrored-library-traefik 3.3.6 3a1e150bf4c56 225MB
docker.io/rancher/mirrored-metrics-server v0.7.2 48d9cfaaf3904 68.1MB
docker.io/rancher/mirrored-pause 3.6 6270bb605e12e 686kB
2、安装karmada
1)、karmadactl安装
cd karmada/
#安装
chmod +x karmadact
cp karmadactl /usr/local/bin/
验证karmadactl安装
root@ubuntu:/home/k3s/images# karmadactl version
karmadactl version: version.Info{GitVersion:"v1.13.0", GitCommit:"ecc12b4ce8da8584c4c63d8ec81c6c944f4fb6b2", GitTreeState:"clean", BuildDate:"2025-02-28T11:14:15Z", GoVersion:"go1.22.12", Compiler:"gc", Platform:"linux/amd64"}
2)、导入镜像
k3s ctr -n k8s.io images import karmada-images-amd64.tar.gz
3)、安装
karmadactl init --crds crds.tar.gz --kubeconfig /etc/rancher/k3s/k3s.yaml --etcd-image coreos/etcd:v3.5.13 --karmada-aggregated-apiserver-image karmada/karmada-aggregated-apiserver:v1.13.0 --karmada-kube-controller-manager-image=kube-controller-manager:v1.29.2 --karmada-apiserver-image kube-apiserver:v1.29.2 --karmada-scheduler-image karmada/karmada-scheduler:v1.13.0 --karmada-webhook-image karmada/karmada-webhook:v1.13.0 --karmada-data=/etc/karmada --karmada-pki=/etc/karmada/pki
出现如下界面表示安装成功:
I0611 01:16:15.932986 5564 idempotency.go:296] Service karmada-system/karmada-webhook has been created or updated.------------------------------------------------------------------------------------------------------█████ ████ █████████ ███████████ ██████ ██████ █████████ ██████████ █████████
░░███ ███░ ███░░░░░███ ░░███░░░░░███ ░░██████ ██████ ███░░░░░███ ░░███░░░░███ ███░░░░░███░███ ███ ░███ ░███ ░███ ░███ ░███░█████░███ ░███ ░███ ░███ ░░███ ░███ ░███░███████ ░███████████ ░██████████ ░███░░███ ░███ ░███████████ ░███ ░███ ░███████████░███░░███ ░███░░░░░███ ░███░░░░░███ ░███ ░░░ ░███ ░███░░░░░███ ░███ ░███ ░███░░░░░███░███ ░░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ███ ░███ ░████████ ░░████ █████ █████ █████ █████ █████ █████ █████ █████ ██████████ █████ █████
░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░
------------------------------------------------------------------------------------------------------
Karmada is installed successfully.Register Kubernetes cluster to Karmada control plane.Register cluster with 'Push' modeStep 1: Use "karmadactl join" command to register the cluster to Karmada control plane. --cluster-kubeconfig is kubeconfig of the member cluster.
(In karmada)~# MEMBER_CLUSTER_NAME=$(cat ~/.kube/config | grep current-context | sed 's/: /\n/g'| sed '1d'| tr -d "\"'")
(In karmada)~# karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join ${MEMBER_CLUSTER_NAME} --cluster-kubeconfig=$HOME/.kube/configStep 2: Show members of karmada
(In karmada)~# kubectl --kubeconfig /etc/karmada/karmada-apiserver.config get clustersRegister cluster with 'Pull' modeStep 1: Create bootstrap token and generate the 'karmadactl register' command which will be used later.
~# karmadactl token create --print-register-command --kubeconfig=/etc/karmada/karmada-apiserver.config
This command will generate a registration command similar to:karmadactl register 172.18.0.5:5443 --token t8xfio.640u9gp9obc72v5d --discovery-token-ca-cert-hash sha256:9cfa542ff48f43793d1816b1dd0a78ad574e349d8f6e005e6e32e8ab528e4244Step 2: Use the output from Step 1 to register the cluster to the Karmada control plane.
You need to specify the target member cluster by flag '--kubeconfig'
~# karmadactl register 172.18.0.5:5443 --token t8xfio.640u9gp9obc72v5d --discovery-token-ca-cert-hash sha256:9cfa542ff48f43793d1816b1dd0a78ad574e349d8f6e005e6e32e8ab528e4244 --kubeconfig=<path-to-member-cluster-kubeconfig>Step 3: Show members of Karmada.
~# karmadactl --kubeconfig=/etc/karmada/karmada-apiserver.config get clustersThe karmadactl register command has several optional parameters for setting the properties of the member cluster. For more details, run:~# karmadactl register --help
4)、卸载
若需要卸载karmada才执行以下操作:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl config use-context defaultkarmadactl deinit
kubectl delete namespace karmada-system
rm -rf /var/lib/karmada-etcd
3、安装karmada的dashboard
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl config use-context default
#安装 dashboard api和web。
cd /home/k3s/images/karmada/multi-cluster
kubectl apply -k nodeport-mode
#先删除旧的。失败不管
kubectl delete secret kubeconfig -n karmada-system
#创建密钥kubeconfig
kubectl create secret generic kubeconfig --from-file=kubeconfig=/etc/karmada/karmada-apiserver.config -n karmada-system
#安装管理侧秘钥
export KUBECONFIG=/etc/karmada/karmada-apiserver.config
kubectl config use-context karmada-apiserver
cd /home/k3s/images/karmada/
#先清理,失败不管
kubectl delete -f dashboard/karmada-dashboard-sa.yaml
#安装凭证
kubectl apply -f dashboard/karmada-dashboard-sa.yaml
#获取token
kubectl -n karmada-system get secret/karmada-dashboard-secret -o go-template="{{.data.token | base64decode}}"
登录页面
#ip为虚拟机IP
http://192.168.134.132:32000
内容为 上一步获取的token。登录页面成功即完成。
4、karmada纳管k3s集群
使用pull模式。安装步骤如下:
export KUBECONFIG=/etc/karmada/karmada-apiserver.config
kubectl config use-context karmada-apiserver
#获取加入集群命令
karmadactl token create --print-register-command --kubeconfig=/etc/karmada/karmada-apiserver.config#在得到的命令后添加--kubeconfig=,例如:
karmadactl register 192.168.134.132:32443 --token cwcx0t.6gtwz1ge0ugzya3x --discovery-token-ca-cert-hash sha256:562734f87c27d2030c2a5ff16edfcf0a6d6f4dc9f9f060b05b092236c83d3714 --kubeconfig=/etc/rancher/k3s/k3s.yaml
查看加入的集群:
rot@ubuntu:/home/k3s/images/karmada# kubectl get clusters
NAME VERSION MODE READY AGE
default v1.33.1+k3s1 Pull True 56s
在页面中也能看见该集群。
至此k3s+karmada搭建完成。