[ad_1]
K3d là một trình bao bọc mã nguồn mở xung quanh bản phân phối Kubernetes Rancher / SUSE K3s cho phép bạn chạy mặt phẳng điều khiển bên trong Docker. Toàn bộ ngăn xếp chạy trong Docker, cung cấp cho bạn một cụm được chứa đầy đủ, nhẹ và dễ thiết lập.
Trong khi K3s được thiết kế cho một loạt các quy trình công việc, K3d tập trung cụ thể hơn vào các tình huống phát triển mà bạn đã sử dụng Docker. Nó cho phép bạn tạo một cụm Kubernetes trên máy chủ Docker hiện có của bạn mà không cần chạy máy ảo hoặc bất kỳ dịch vụ hệ thống nào khác.
Bài viết này sẽ hướng dẫn bạn cách khởi động và chạy với K3d cluster đơn giản. Bạn sẽ cần cả Kubectl và Docker v20.10.5 hoặc mới hơn đã được cài đặt trên hệ thống của mình trước khi bắt đầu. K3d hoạt động trên Linux, Mac (bao gồm cả Homebrew) và Windows (thông qua Chocolatey). Hướng dẫn này tập trung vào việc sử dụng với Linux; k3d
Hướng dẫn cài đặt CLI cho các nền tảng khác có sẵn trong tài liệu.
Cài đặt K3d CLI
Các k3d
CLI cung cấp các lệnh quản lý để tạo và quản lý các cụm của bạn. Bạn có thể tìm CLI mới nhất trên GitHub hoặc chạy tập lệnh cài đặt để tự động tải xuống chính xác cho hệ thống của bạn.
$ curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
Tập lệnh ký thác k3d
nhị phân thành của bạn /usr/local/bin
danh mục. Hãy thử chạy k3d version
lệnh để kiểm tra cài đặt của bạn đã thành công:
$ k3d version k3d version v5.4.6 k3s version v1.24.4-k3s1 (default)
Tạo một cụm
K3d CLI cung cấp một cluster create
lệnh để tự động tạo và bắt đầu một cụm mới:
$ k3d cluster create 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[0001] Pulling image 'ghcr.io/k3d-io/k3d-tools:5.4.6' INFO[0002] Pulling image 'docker.io/rancher/k3s:v1.24.4-k3s1' INFO[0002] Starting Node 'k3d-k3s-default-tools' INFO[0008] Creating LoadBalancer 'k3d-k3s-default-serverlb' INFO[0009] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.4.6' INFO[0012] Using the k3d-tools node to gather environment information INFO[0012] HostIP: using network gateway 172.25.0.1 address INFO[0012] Starting cluster 'k3s-default' INFO[0012] Starting servers... INFO[0012] Starting Node 'k3d-k3s-default-server-0' INFO[0016] All agents already running. INFO[0016] Starting helpers... INFO[0016] Starting Node 'k3d-k3s-default-serverlb' INFO[0022] Injecting records for hostAliases (incl. host.k3d.internal) and for 2 network members into CoreDNS configmap... INFO[0025] Cluster 'k3s-default' created successfully! INFO[0025] You can now use it like this: kubectl cluster-info
Cụm sẽ được đặt tên k3s-default
khi bạn chạy lệnh mà không có bất kỳ đối số nào. Đặt tên của riêng bạn bằng cách bao gồm nó làm đối số đầu tiên của lệnh:
$ k3d cluster create demo ...
K3d tự động sửa đổi tệp cấu hình Kubernetes của bạn (.kube/config
) để bao gồm một kết nối đến cụm mới của bạn. Nó đánh dấu kết nối làm mặc định vì vậy kubectl
các lệnh bây giờ sẽ nhắm mục tiêu đến môi trường K3d của bạn.
$ kubectl cluster-info Kubernetes control plane is running at https://0.0.0.0:42879 CoreDNS is running at https://0.0.0.0:42879/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy Metrics-server is running at https://0.0.0.0:42879/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy
Đang chạy docker ps
sẽ hiển thị hai vùng chứa đã được khởi động, một cho K3s và một cho proxy của K3d chuyển tiếp lưu lượng truy cập vào cụm của bạn:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9b6b610ad312 ghcr.io/k3d-io/k3d-proxy:5.4.6 "/bin/sh -c nginx-pr..." 3 minutes ago Up 3 minutes 80/tcp, 0.0.0.0:42879->6443/tcp k3d-k3s-default-serverlb 842cc90b78bf rancher/k3s:v1.24.4-k3s1 "/bin/k3s server --t..." 3 minutes ago Up 3 minutes k3d-k3s-default-server-0
Sử dụng cụm của bạn
Sử dụng các lệnh Kubectl quen thuộc để tương tác với cụm của bạn và triển khai Nhóm của bạn:
$ kubectl run nginx --image nginx:latest pod/nginx created $ kubectl expose pod/nginx --port 80 --type NodePort service/nginx exposed
Để truy cập máy chủ NGINX của bạn, trước tiên hãy tìm địa chỉ IP được gán cho Kubernetes Node của bạn:
$ kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k3d-k3s-default-server-0 Ready control-plane,master 102s v1.24.4+k3s1 172.27.0.2 <none> K3s dev 5.4.0-125-generic containerd://1.6.6-k3s1
IP chính xác để sử dụng là 172.27.0.2
.
Tiếp theo, tìm NodePort được chỉ định cho nginx
Dịch vụ:
$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 5m49s nginx NodePort 10.43.235.233 <none> 80:31214/TCP 1s
Số cổng tiếp xúc là 31214
. Yêu cầu 172.17.0.2:31214
sẽ phát hành trang chào mừng NGINX mặc định:
$ curl http://172.17.0.2:31214 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ...
Bạn có thể nhận thêm hướng dẫn về cách hiển thị các dịch vụ và thiết lập mạng Ingress trong tài liệu K3d.
Bật cờ K3s
Các cluster create
lệnh kết thúc quá trình tạo cụm K3s tiêu chuẩn. Bạn có thể chuyển các đối số tới K3 bằng cách cung cấp --k3s-arg
cờ. Giá trị của cờ phải là một đối số sẽ được bao gồm khi K3d gọi K3s nhị phân.
$ k3s cluster create --k3s-arg "--disable=traefik"
Ví dụ này hướng dẫn K3s vô hiệu hóa thành phần Traefik tích hợp của nó.
Truy cập các dịch vụ đang chạy trên máy chủ của bạn
Một số khối lượng công việc bạn chạy trong K3d có thể cần truy cập các dịch vụ đã chạy trên máy chủ Docker của bạn. K3d cung cấp một tên máy chủ được gọi là host.k3d.internal
trong cấu hình DNS mặc định của nó. Điều này sẽ tự động giải quyết cho máy chủ của bạn. Bạn có thể tham chiếu tên máy chủ đặc biệt này trong Pods của mình để truy cập cơ sở dữ liệu hiện có, chia sẻ tệp và các API khác chạy bên ngoài Kubernetes.
Sử dụng hình ảnh Docker cục bộ
Cụm K3d / K3s của bạn không thể truy cập hình ảnh Docker cục bộ của bạn. Cụm và tất cả các thành phần của nó đang chạy nội bộ Docker. Cố gắng sử dụng hình ảnh riêng tư chỉ tồn tại trên máy chủ lưu trữ sẽ không thành công và báo lỗi.
Có hai cách để giải quyết vấn đề này: hoặc đẩy hình ảnh của bạn vào sổ đăng ký hoặc sử dụng tính năng nhập hình ảnh của K3d để sao chép hình ảnh cục bộ vào cụm của bạn. Phương pháp đầu tiên thường được ưa thích hơn vì nó tập trung lưu trữ hình ảnh của bạn và cho phép bạn truy cập hình ảnh từ bất kỳ môi trường nào. Tuy nhiên, khi nhanh chóng kiểm tra các thay đổi cục bộ, bạn có thể muốn nhập trực tiếp hình ảnh mà bạn vừa tạo:
$ k3d image import demo-image:latest
Lệnh này sẽ làm cho demo-image:latest
có sẵn bên trong cụm của bạn.
K3d cũng có thể tạo và hiển thị sổ đăng ký hình ảnh cho bạn. Các đăng ký được tạo tốt nhất cùng với cụm của bạn vì K3d sau đó có thể tự động định cấu hình quyền truy cập của cụm:
$ k3d cluster create --registry-create demo-registry
Điều này bắt đầu một cụm mới với sổ đăng ký được gọi là demo-registry
. Sổ đăng ký sẽ chạy trong vùng chứa Docker của riêng nó. Bạn có thể khám phá số cổng mà sổ đăng ký được hiển thị bằng cách chạy docker ps -f name=<cluster-name>-registry
ở đâu <cluster-name>
là tên của cụm của bạn. Đẩy hình ảnh vào sổ đăng ký này sẽ làm cho chúng có thể truy cập được đối với Nhóm trong cụm của bạn.
$ docker tag demo-image:latest k3d-demo-registry.localhost:12345/demo-image:latest $ docker push k3d-demo-registry.localhost:12345/demo-image:latest
Bạn cũng có thể tạo đăng ký theo yêu cầu nhưng bạn sẽ cần phải định cấu hình lại cụm của mình theo cách thủ công để cung cấp thông tin chi tiết về kết nối.
Dừng cụm của bạn
Cụm K3d của bạn sẽ chạy liên tục cho đến khi bạn tự dừng nó. Các cluster stop
lệnh dừng chạy các vùng chứa Docker trong khi bảo toàn dữ liệu cụm của bạn:
$ k3d cluster stop k3s-default
Khởi động lại cụm của bạn trong tương lai bằng cách sử dụng cluster start
yêu cầu:
$ k3d cluster start k3s-default
Xóa cụm của bạn
Bạn có thể xóa một cụm bất kỳ lúc nào bằng cách chạy cluster delete
lệnh và cung cấp tên của nó. Thao tác này sẽ xóa tất cả dấu vết của cụm, xóa vùng chứa Docker và khối lượng đã cung cấp nó. Xóa tất cả các cụm của bạn sẽ đưa máy chủ của bạn trở lại một phương tiện chặn sạch chỉ với K3d CLI được cài đặt.
$ k3d cluster delete k3s-default INFO[0000] Deleting cluster 'k3s-default' INFO[0001] Deleting cluster network 'k3d-k3s-default' INFO[0001] Deleting 2 attached volumes... INFO[0001] Removing cluster details from default kubeconfig... INFO[0001] Removing standalone kubeconfig file (if there is one)... INFO[0001] Successfully deleted cluster k3s-default!
Quá trình xóa tự động xóa các tham chiếu đến cụm khỏi Kubeconfig của bạn.
Bản tóm tắt
K3d cho phép bạn chạy một cụm Kubernetes được chứa đựng. Nó cung cấp một môi trường K3s hoàn chỉnh ở bất kỳ nơi nào có sẵn Docker. K3d hỗ trợ nhiều nút, có hỗ trợ tích hợp cho các đăng ký hình ảnh và có thể được sử dụng để tạo các cụm khả dụng cao với nhiều mặt phẳng điều khiển.
Các nhà phát triển đã chạy Docker có thể sử dụng K3d để nhanh chóng thêm Kubernetes vào môi trường làm việc của họ. K3d nhẹ, dễ quản lý và không thêm dịch vụ hệ thống nào khác vào máy của bạn. Điều này làm cho nó trở thành một lựa chọn tuyệt vời để sử dụng cục bộ nhưng sự phụ thuộc vào Docker có nghĩa là nó có thể không phù hợp với các máy chủ sản xuất nơi bạn không muốn thêm một phụ thuộc khác. Các bản phân phối Kubernetes khác như Minikube, Microk8s và K3 đơn giản đều là những lựa chọn thay thế khả thi.
[ad_2]