Kubectl & K3d

2022-05-10
2022-05-11
3 min read
Hits

  博主有幸低价购得一点台二手高配的腾讯云轻量(虽然只有 4C4G8M,但是在国内这绝对可以算是高配了……),最重要的一点是腾讯云轻量可以直接装 K3s、Docker 这种,不管怎么搞砸,总能一键重装,而且 Docker 基础镜像还能直接通过网页控制台作简易操作(启动、重启、停止和加端口的这种简易……真要操作容器还是直接登服务器输命令吧)。但是因为腾讯自带的 K3s 版本太低了(1.20.7)无法正常使用,所以博主还是安装了 Docker,然后就发现了 K3d(K3s in docker)这种好东西。

  K3d 简单点理解就是在一台服务器上,将 K3s 的 Server 和 Agent 以 Docker 的方式进行部署,一个 Docker 代表一个节点。结合腾讯云轻量 Docker 基础镜像的功能,在安装完 K3d 之后便可以通过网页控制台操作各个 Docker(Server/Agent),简直完美适配。(P.S. 腾讯云可以考虑和 K3d 来一波联名~)

k3d is a lightweight wrapper to run k3s (Rancher Lab’s minimal Kubernetes distribution) in docker.

k3d makes it very easy to create single- and multi-node k3s clusters in docker, e.g. for local development on Kubernetes.

                     ——摘自 K3d 官网 What is k3d?

安装 Kubectl

  博主在安装 K3d 时发现,并未同步安装 Kubectl,而后的很多命令都需要 Kubectl,所以博主建议在安装 K3d 前,先安装 Kubectl

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"     # 下载 Kubectl 最新发行版
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"     # 下载 Kubectl 校验和文件
echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check     # 基于校验和文件,验证 Kubectl 的可执行文件
# 验证通过时,输出为:kubectl: OK
# 验证失败时,sha256 将以非零值退出,并打印如下输出:kubectl: FAILED
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl     # 安装 Kubectl
kubectl version --client     # 执行测试,以保障你安装的版本是最新的
kubectl version --client --output=yaml     # 使用此命令来查看版本的详细信息

K3d 单服务器节点

wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash     # 安装当前最新版本
k3d cluster create mycluster     # 创建一个仅以单个服务器节点命名的群集:mycluster
kubectl get nodes     # 将新集群与 Kubectl 结合使用
k3d cluster delete mycluster     # 删除 mycluster 集群

  好了,现在应该可以在腾讯云轻量网页控制台看到单 Server 和单 Agent 的容器了。

K3d 高可用部署

k3d cluster create mycluster --api-port 127.0.0.1:6443 --servers 3 --agents 2 --port '8080:80@loadbalancer'     # 创建三个 Server 节点和两个 Agent 节点,并将 api server 的 6443 端口映射到 localhost,将 8080 端口映射到 loadbalancer 的 80 端口

  经过漫长的等待,窗口会输出如下内容,代表所有 Docker 都运行起来了,在腾讯云网页控制台上也可以看到有六个容器都正在运行,分别是三个 Server、两个 Agent 和一个 LoadBalancer

INFO[0000] portmapping '8080:80' targets the loadbalancer: defaulting to [servers:*:proxy agents:*:proxy] 
INFO[0000] Prep: Network                                
INFO[0000] Created network 'k3d-mycluster'              
INFO[0000] Created image volume k3d-mycluster-images    
INFO[0000] Creating initializing server node            
INFO[0000] Creating node 'k3d-mycluster-server-0'       
INFO[0000] Starting new tools node...                   
INFO[0000] Pulling image 'docker.io/rancher/k3s:v1.22.7-k3s1' 
INFO[0002] Pulling image 'ghcr.io/k3d-io/k3d-tools:5.4.1' 
INFO[0004] Creating node 'k3d-mycluster-server-1'       
INFO[0005] Creating node 'k3d-mycluster-server-2'       
INFO[0005] Creating node 'k3d-mycluster-agent-0'        
INFO[0005] Creating node 'k3d-mycluster-agent-1'        
INFO[0005] Creating LoadBalancer 'k3d-mycluster-serverlb' 
INFO[0010] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.4.1' 
INFO[0110] Starting Node 'k3d-mycluster-tools'          
INFO[0315] Using the k3d-tools node to gather environment information 
INFO[0315] HostIP: using network gateway 172.18.0.1 address 
INFO[0315] Starting cluster 'mycluster'                 
INFO[0315] Starting the initializing server...          
INFO[0315] Starting Node 'k3d-mycluster-server-0'       
INFO[0317] Starting servers...                          
INFO[0317] Starting Node 'k3d-mycluster-server-1'       
INFO[0339] Starting Node 'k3d-mycluster-server-2'       
INFO[0351] Starting agents...                           
INFO[0352] Starting Node 'k3d-mycluster-agent-0'        
INFO[0352] Starting Node 'k3d-mycluster-agent-1'        
INFO[0360] Starting helpers...                          
INFO[0360] Starting Node 'k3d-mycluster-serverlb'       
INFO[0366] Injecting records for hostAliases (incl. host.k3d.internal) and for 6 network members into CoreDNS configmap... 
INFO[0369] Cluster 'mycluster' created successfully!    
INFO[0369] You can now use it like this:                
kubectl cluster-info
Avatar

Hui.Ke

❤ Cyber Security | Safety is a priority.