apiVersion:k3d.io/v1alpha4 kind:Simple metadata: name:k3s-default servers:1# same as `--servers 1` agents:2# same as `--agents 2` image:docker.io/rancher/k3s:v1.25.6-k3s1 kubeAPI:# same as `--api-port myhost.my.domain:6445` (where the name would resolve to 127.0.0.1) host:'127.0.0.1'# important for the `server` setting in the kubeconfig # hostIP: "192.168.1.200" # where the Kubernetes API will be listening on hostPort:'6445'# where the Kubernetes API listening port will be mapped to on your host system ports: -port:80:80# same as `--port '8080:80@loadbalancer'` nodeFilters: -loadbalancer options: k3d:# k3d runtime settings wait:true# wait for cluster to be usable before returining; same as `--wait` (default: true) timeout:'60s'# wait timeout before aborting; same as `--timeout 60s` disableLoadbalancer:false# same as `--no-lb` disableImageVolume:false# same as `--no-image-volume` disableRollback:false# same as `--no-Rollback` loadbalancer: configOverrides: -settings.workerConnections=2048 k3s:# options passed on to K3s itself extraArgs:# additional arguments passed to the `k3s server|agent` command; same as `--k3s-arg` -arg:'--tls-san=127.0.0.1 --tls-san=ks.newbe.io' nodeFilters: -server:* kubeconfig: updateDefaultKubeconfig:true# add new cluster to your default Kubeconfig; same as `--kubeconfig-update-default` (default: true) switchCurrentContext:true# also set current-context to the new cluster's context; same as `--kubeconfig-switch-context` (default: true) registries:# define how registries should be created or used config: |# define contents of the `registries.yaml` file (or reference a file); same as `--registry-config /path/to/config.yaml` mirrors: "docker.io": endpoint: -"https://mirror.ccs.tencentyun.com"
root@OpenWrt:/mnt/sda1/workspace# ./k3d cluster create --config k3d.yml INFO[0000] Using config file k3d.yml (k3d.io/v1alpha4#simple) INFO[0000] portmapping '80:80' targets the loadbalancer: defaulting to [servers:*:proxy agents:*:proxy] INFO[0000] Prep: Network INFO[0000] Created network 'k3d-k3s-default' INFO[0000] Created image volume k3d-k3s-default-images INFO[0000] Starting new tools node... INFO[0000] Starting Node 'k3d-k3s-default-tools' INFO[0001] Creating node 'k3d-k3s-default-server-0' INFO[0001] Creating node 'k3d-k3s-default-agent-0' INFO[0001] Creating node 'k3d-k3s-default-agent-1' INFO[0001] Creating LoadBalancer 'k3d-k3s-default-serverlb' INFO[0001] Using the k3d-tools node to gather environment information INFO[0001] HostIP: using network gateway 172.18.0.1 address INFO[0001] Starting cluster 'k3s-default' INFO[0001] Starting servers... INFO[0001] Starting Node 'k3d-k3s-default-server-0' INFO[0006] Starting agents... INFO[0007] Starting Node 'k3d-k3s-default-agent-0' INFO[0007] Starting Node 'k3d-k3s-default-agent-1' INFO[0010] Starting helpers... INFO[0010] Starting Node 'k3d-k3s-default-serverlb' INFO[0017] Injecting records for hostAliases (incl. host.k3d.internal) and for 4 network members into CoreDNS configmap... INFO[0019] Cluster 'k3s-default' created successfully! INFO[0019] You can now use it like this: kubectl cluster-info
这样我们就得到了一个 k3d 集群,其中包含了一个 master 节点和两个 worker 节点。
获取 kubeconfig
k3d 集群创建成功后,我们可以通过 k3d 命令获取 kubeconfig 文件:
1
k3d kubeconfig get --all
将 kubeconfig 配置好,就可以使用 kubectl 命令操作 k3d 集群了。
1
kubectl get nodes
1 2 3 4
NAME STATUS ROLES AGE VERSION k3d-k3s-default-server-0 Ready control-plane,master 38m v1.25.6+k3s1 k3d-k3s-default-agent-1 Ready <none> 38m v1.25.6+k3s1 k3d-k3s-default-agent-0 Ready <none> 38m v1.25.6+k3s1