Chạy một cụm Kubernetes trong Docker

[ad_1]

Sửa máy tính tại nhà TPHCM

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.

dịch vụ cài win online từ xa

[ad_2]

Vui lòng đánh giá về dịch vụ tại nhà