K3D部署K3S本地DEV环境

K3D部署K3S本地DEV环境

利用k3d可以在本地快速的部署k3s集群,可以很好的学习与部署k3s, k8s等相关知识,也能够结合其作为本地dev环境进行项目开发和测试。

安装

利用以下命令行可以快速安装二进制执行包

wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash

体验

  1. 创建一个集群,并将ingress的80端口映射到localhost:8081

k3d cluster create --api-port 6550 -p "8081:80@loadbalancer" --agents 2

输出如下:


INFO[0000] portmapping '8081: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[0001] Creating node 'k3d-k3s-default-server-0'     
INFO[0002] Pulling image 'ghcr.io/k3d-io/k3d-tools:5.6.0' 
INFO[0015] Pulling image 'docker.io/rancher/k3s:v1.27.4-k3s1' 
INFO[0080] Creating node 'k3d-k3s-default-agent-0'      
INFO[0081] Creating node 'k3d-k3s-default-agent-1'      
INFO[0081] Creating LoadBalancer 'k3d-k3s-default-serverlb' 
INFO[0083] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.6.0' 
INFO[0093] Starting Node 'k3d-k3s-default-tools'        
INFO[0478] Using the k3d-tools node to gather environment information 
INFO[0478] HostIP: using network gateway 172.19.0.1 address 
INFO[0478] Starting cluster 'k3s-default'               
INFO[0478] Starting servers...                          
INFO[0478] Starting Node 'k3d-k3s-default-server-0'     
INFO[0482] Starting agents...                           
INFO[0482] Starting Node 'k3d-k3s-default-agent-1'      
INFO[0482] Starting Node 'k3d-k3s-default-agent-0'      
INFO[0486] Starting helpers...                          
INFO[0486] Starting Node 'k3d-k3s-default-serverlb'     
INFO[0493] Injecting records for hostAliases (incl. host.k3d.internal) and for 4 network members into CoreDNS configmap... 
INFO[0495] Cluster 'k3s-default' created successfully!  
INFO[0495] You can now use it like this:                
kubectl cluster-info
  1. 设置 kubectl 配置环境变量

export KUBECONFIG="$(k3d kubeconfig write k3s-default)"

  1. 部署 nginx pod

kubectl create deployment nginx --image=nginx

  1. 创建 ClusterIP 服务节点

kubectl create service clusterip nginx --tcp=80:80

  1. 按照下列配置创建一个 ingress 对象

kubectl apply -f thatfile.yaml

# apiVersion: networking.k8s.io/v1beta1 # for k3s < v1.19
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx
  annotations:
    ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx
            port:
            number: 80
  1. 现在可以尝试用 curl 访问对应的网址

curl localhost:8081/

  1. k3d 运行情况

$ kubectl get pods   
NAME                     READY   STATUS    RESTARTS   AGE
nginx-77b4fdf86c-j6vkc   1/1     Running   0          29m

$ kubectl get service

NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.43.0.1       <none>        443/TCP   50m
nginx        ClusterIP   10.43.222.243   <none>        80/TCP    2m47s

$ kubectl get ingress      
NAME    CLASS     HOSTS   ADDRESS                            PORTS   AGE
nginx   traefik   *       172.19.0.2,172.19.0.3,172.19.0.4   80      2m10s

$ docker ps                  
CONTAINER ID   IMAGE                            COMMAND                  CREATED             STATUS          PORTS                                                           NAMES
090589bccce9   ghcr.io/k3d-io/k3d-proxy:5.6.0   "/bin/sh -c nginx-pr…"   55 minutes ago      Up 55 minutes   0.0.0.0:8081->80/tcp, :::8081->80/tcp, 0.0.0.0:6550->6443/tcp   k3d-k3s-default-serverlb
ff8213e2220f   rancher/k3s:v1.27.4-k3s1         "/bin/k3d-entrypoint…"   About an hour ago   Up 55 minutes                                                                   k3d-k3s-default-agent-1
5974730df235   rancher/k3s:v1.27.4-k3s1         "/bin/k3d-entrypoint…"   About an hour ago   Up 55 minutes                                                                   k3d-k3s-default-agent-0
045b863df56b   rancher/k3s:v1.27.4-k3s1         "/bin/k3d-entrypoint…"   About an hour ago   Up 55 minutes                                                                   k3d-k3s-default-server-0

参考

Publish on 2024-03-26,Update on 2025-02-10