Cách bắt đầu một cụm Kubernetes từ

[ad_1]

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

Bạn Đang Xem: Cách bắt đầu một cụm Kubernetes từ

Kubernetes nổi tiếng về độ phức tạp nhưng các bản phát hành hiện đại tương đối đơn giản để thiết lập. Công cụ quản trị cụm chính thức Kubeadm cung cấp trải nghiệm tự động để khởi động máy bay điều khiển của bạn và đăng ký các nút công nhân.

Bài viết này sẽ hướng dẫn bạn cách thiết lập một cụm Kubernetes đơn giản bằng cách sử dụng cấu hình mặc định. Đây là hướng dẫn “từ đầu” sẽ hoạt động trên máy chủ mới được cấp phép. Giả sử hệ thống dựa trên Debian nhưng bạn có thể điều chỉnh hầu hết các lệnh để phù hợp với trình quản lý gói của hệ điều hành. Các bước này đã được thử nghiệm bằng Ubuntu 22.04 và Kubernetes v1.25.

Cài đặt Thời gian chạy vùng chứa

Kubernetes cần thời gian chạy vùng chứa tương thích với CRI để bắt đầu và chạy vùng chứa của bạn. Bản phân phối Kubernetes tiêu chuẩn không đi kèm với thời gian chạy, vì vậy bạn nên cài đặt một bản phân phối trước khi tiếp tục. containerd là sự lựa chọn phổ biến nhất. Đó là thời gian chạy được bao gồm trong các bản phát hành Docker hiện đại.

Bạn có thể cài đặt containerd bằng cách sử dụng kho lưu trữ Apt của Docker. Đầu tiên, hãy thêm một số phụ thuộc sẽ được sử dụng trong quá trình cài đặt:

$ sudo apt update
$ sudo apt install -y 
   ca-certificates 
   curl 
   gnupg 
   lsb-release

Tiếp theo, thêm khóa GPG của kho lưu trữ vào Apt’s keyrings danh mục:

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Bây giờ bạn có thể thêm kho lưu trữ chính xác cho hệ thống của mình bằng cách chạy lệnh này:

$ echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Cập nhật danh sách gói của bạn để bao gồm nội dung của kho lưu trữ Docker:

$ sudo apt update

Cuối cùng cài đặt containerd:

$ sudo apt install -y containerd.io

Kiểm tra dịch vụ containerd đã khởi động:

$ sudo service containerd status
 containerd.service - containerd container runtime
     Loaded: loaded (/lib/systemd/system/containerd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-09-13 16:50:12 BST; 6s ago

Cần có một vài chỉnh sửa đối với tệp cấu hình containerd để tệp hoạt động bình thường với Kubernetes. Trước tiên, hãy thay thế nội dung của tệp bằng cấu hình mặc định của containerd:

$ sudo containerd config default > /etc/containerd/config.toml

Điều này điền tất cả các trường cấu hình có sẵn và giải quyết một số vấn đề, chẳng hạn như hỗ trợ CRI bị vô hiệu hóa khi cài đặt mới.

Mở tiếp /etc/containerd/config.toml và tìm dòng sau:

SystemdCgroup = false

Thay đổi giá trị thành true:

SystemdCgroup = true

Sửa đổi này là bắt buộc để hỗ trợ đầy đủ cho systemd quản lý cgroup. Nếu không có tùy chọn này, các vùng chứa hệ thống Kubernetes sẽ tự khởi động lại theo định kỳ.

Khởi động lại containerd để áp dụng các thay đổi của bạn:

$ sudo service containerd restart

Cài đặt Kubeadm, Kubectl và Kubelet

Giai đoạn thứ hai trong quá trình này là cài đặt các công cụ Kubernetes. Ba tiện ích này cung cấp các khả năng sau:

  • Kubeadm – Một công cụ quản trị hoạt động ở cấp độ cụm. Bạn sẽ sử dụng điều này để tạo cụm của mình và thêm các nút bổ sung.
  • Kubectl – Kubectl là CLI bạn sử dụng để tương tác với cụm Kubernetes khi nó đang chạy.
  • Kubelet – Đây là quá trình Kubernetes chạy trên các nút công nhân của cụm của bạn. Nó chịu trách nhiệm duy trì liên lạc với máy bay điều khiển và khởi động các thùng chứa mới khi được yêu cầu.

Ba mã nhị phân có sẵn trong kho lưu trữ Apt do Google Cloud lưu trữ. Trước tiên hãy đăng ký keyring GPG của kho lưu trữ:

$ sudo curl -fsSLo /etc/apt/keyrings/kubernetes.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

Tiếp theo, thêm kho lưu trữ vào các nguồn của bạn…

$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

… Và cập nhật danh sách gói hàng của bạn:

$ sudo apt update

Xem Thêm : Câu chuyện có thật về How the Weird Al

Bây giờ cài đặt các gói:

$ sudo apt install -y kubeadm kubectl kubelet

Cách tốt nhất là “giữ” các gói này để Apt không tự động cập nhật chúng khi bạn chạy apt upgrade. Nâng cấp cụm Kubernetes nên được bắt đầu theo cách thủ công để tránh thời gian chết và tránh những thay đổi không mong muốn.

$ sudo apt-mark hold kubeadm kubectl kubelet

Tắt Hoán đổi

Kubernetes không hoạt động khi bật tính năng hoán đổi. Bạn phải tắt trao đổi trước khi tạo cụm của mình. Nếu không, bạn sẽ thấy quá trình cấp phép bị treo trong khi chờ Kubelet bắt đầu.

Chạy lệnh này để tắt trao đổi:

$ sudo swapoff -a

Tiếp theo chỉnh sửa của bạn /etc/fstab tệp và vô hiệu hóa bất kỳ gắn kết hoán đổi nào:

UUID=ec6efe91-5d34-4c80-b59c-cafe89cc6cb2 /               ext4    errors=remount-ro 0       1
/swapfile                                 none            swap    sw              0       0

Tệp này hiển thị một liên kết với swap gõ ở dòng cuối cùng. Nó nên được gỡ bỏ hoặc nhận xét để trao đổi vẫn bị vô hiệu hóa sau khi hệ thống khởi động lại.

Đang tải Mô-đun br_netfilter

Các br_netfilter mô-đun hạt nhân được yêu cầu để cho phép iptables xem lưu lượng bắc cầu. Kubeadm sẽ không cho phép bạn tạo cụm khi thiếu mô-đun này.

Bạn có thể kích hoạt nó bằng lệnh sau:

$ sudo modprobe br_netfilter

Làm cho nó tồn tại sau khi khởi động lại bằng cách đưa nó vào danh sách mô-đun hệ thống của bạn:

$ echo br_netfilter | sudo tee /etc/modules-load.d/kubernetes.conf

Tạo cụm của bạn

Bạn đã sẵn sàng tạo cụm Kubernetes của mình. Chạy kubeadm init trên máy bạn muốn lưu trữ máy bay điều khiển của mình:

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Các --pod-network-cidr cờ được bao gồm để phân bổ CIDR chính xác có sẵn cho phần bổ trợ mạng Pod sẽ được cài đặt sau này. Giá trị mặc định của 10.244.0.0/16 hoạt động trong hầu hết các trường hợp nhưng bạn có thể phải thay đổi phạm vi nếu bạn đang sử dụng môi trường mạng được tùy chỉnh nhiều.

Quá trình tạo cụm có thể mất vài phút để hoàn thành. Thông tin tiến độ sẽ được hiển thị trong thiết bị đầu cuối của bạn. Bạn sẽ thấy thông báo này khi thành công:

Your Kubernetes control-plane has initialized successfully!

Đầu ra cũng bao gồm thông tin về cách bắt đầu sử dụng cụm của bạn.

Chuẩn bị tệp Kubeconfig của bạn

Bắt đầu bằng cách sao chép tệp Kubeconfig được tạo tự động vào tệp của riêng bạn .kube/config danh mục. Điều chỉnh quyền sở hữu tệp cho chính bạn để Kubectl có thể đọc chính xác nội dung của tệp.

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Cài đặt một Pod Networking Addon

Kubernetes yêu cầu một phần bổ trợ mạng Pod tồn tại trong cụm của bạn trước khi các nút công nhân bắt đầu hoạt động bình thường. Bạn phải cài đặt thủ công một addon tương thích để hoàn tất quá trình cài đặt của mình.

Calico và Flannel là hai sự lựa chọn phổ biến nhất. Hướng dẫn này sử dụng Flannel vì trải nghiệm cài đặt đơn giản.

Sử dụng Kubectl để thêm Flannel vào cụm của bạn:

$ kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

Chờ một lát rồi chạy kubectl get nodes trong thiết bị đầu cuối của bạn. Bạn sẽ thấy Node của mình hiển thị dưới dạng Ready và bạn có thể bắt đầu tương tác với cụm của mình.

$ kubectl get nodes
NAME       STATUS   ROLES           AGE     VERSION
ubuntu22   Ready    control-plane   7m19s   v1.25.0

Nếu bạn chạy kubectl get pods --all-namespacesbạn sẽ thấy rằng các thành phần mặt phẳng điều khiển, CoreDNS và Flannel đều đang hoạt động:

$ kubectl get pods --all-namespaces
NAMESPACE      NAME                               READY   STATUS    RESTARTS        AGE
kube-flannel   kube-flannel-ds-xlrk6              1/1     Running   5 (16s ago)     11m
kube-system    coredns-565d847f94-bzzkf           1/1     Running   5 (2m9s ago)    14m
kube-system    coredns-565d847f94-njrdc           1/1     Running   4 (30s ago)     14m
kube-system    etcd-ubuntu22                      1/1     Running   6 (113s ago)    13m
kube-system    kube-apiserver-ubuntu22            1/1     Running   5 (30s ago)     16m
kube-system    kube-controller-manager-ubuntu22   1/1     Running   7 (3m59s ago)   13m
kube-system    kube-proxy-r9g9k                   1/1     Running   8 (21s ago)     14m
kube-system    kube-scheduler-ubuntu22            1/1     Running   7 (30s ago)     15m

Tương tác với nhóm của bạn

Bây giờ bạn có thể bắt đầu sử dụng Kubectl để tương tác với cụm của mình. Trước khi bạn tiếp tục, hãy xóa vết bẩn mặc định trên nút mặt phẳng điều khiển của bạn để cho phép Nhóm lên lịch trên đó. Kubernetes ngăn Pods chạy trên nút mặt phẳng điều khiển để tránh tranh chấp tài nguyên nhưng hạn chế này là không cần thiết cho việc sử dụng cục bộ.

$ kubectl taint node ubuntu22 node-role.kubernetes.io/control-plane:NoSchedule-
node/ubuntu22 untainted

Thay thế ubuntu22 trong lệnh trên với tên được gán cho nút của riêng bạn.

Xem Thêm : Antihelium mang lại hy vọng trong việc tìm kiếm

Bây giờ hãy thử bắt đầu một NGINX Pod đơn giản:

$ kubectl run nginx --image nginx:latest
pod/nginx created

Phơi bày nó với một dịch vụ NodePort:

$ kubectl expose pod/nginx --port 80 --type NodePort
service/nginx exposed

Tìm cổng máy chủ đã được phân bổ cho dịch vụ:

$ kubectl get services
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        18m
nginx        NodePort    10.106.44.155   <none>        80:30647/TCP   27s

Cảng là 30647. Các yêu cầu HTTP tới điểm cuối này bây giờ sẽ đưa ra trang đích NGINX mặc định để phản hồi:

$ curl http://localhost:30647
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

Cụm Kubernetes của bạn đang hoạt động!

Thêm một nút khác

Để định cấu hình các nút công nhân bổ sung, trước tiên hãy lặp lại tất cả các bước trong các phần cho đến “Tạo cụm của bạn” trên mỗi máy bạn muốn sử dụng. Mọi Node sẽ cần cài đặt containerd, Kubeadm và Kubelet. Bạn cũng nên kiểm tra xem nút của bạn có kết nối mạng đầy đủ với máy đang chạy mặt phẳng điều khiển của bạn hay không.

Tiếp theo, chạy lệnh sau trên nút công nhân mới của bạn:

kubeadm join 192.168.122.229:6443 
    --node-name node-b 
    --token <token> 
    --discovery-token-ca-cert-hash sha256:<token-ca-cert-hash>

Thay thế địa chỉ IP bằng địa chỉ của nút mặt phẳng điều khiển của bạn. Các giá trị của <token><token-ca-cert-hash> sẽ được hiển thị khi bạn chạy kubeadm init để tạo máy bay điều khiển của bạn. Bạn có thể lấy chúng bằng các bước sau.

Mã thông báo

Chạy kubeadm token list trên nút mặt phẳng điều khiển. Giá trị mã thông báo sẽ được hiển thị trong TOKEN cột.

$ kubeadm token list
TOKEN                     TTL         EXPIRES                USAGES                   DESCRIPTION                                                EXTRA GROUPS
lkoz6v.cw1e01ckz2yqvw4u   23h         2022-09-14T19:35:03Z   authentication,signing

Mã thông báo CA Cert Hash

Chạy lệnh này và sử dụng đầu ra của nó làm giá trị:

$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | 
   openssl dgst -sha256 -hex | sed 's/^.* //'

Tham gia cụm

Các kubeadm join lệnh sẽ tạo ra kết quả này khi thành công:

$ kubeadm join 192.168.122.229:6443 
    --node-name node-b 
    --token <token> 
    --discovery-token-ca-cert-hash sha256:<token-ca-cert-hash>
[kubelet-start] Starting the kubelet[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

Xác minh nút đã tham gia cụm và sẵn sàng nhận Nhóm bằng cách chạy kubectl get nodes yêu cầu:

$ kubectl get nodes
NAME       STATUS   ROLES           AGE    VERSION
node-b     Ready    <none>          91s    v1.25.0
ubuntu22   Ready    control-plane   100m   v1.25.0

Nút hiển thị trong danh sách và có Ready như trạng thái của nó. Điều này có nghĩa là nó đang hoạt động và Kubernetes có thể lên lịch Pod cho nó.

Bản tóm tắt

Việc thiết lập Kubernetes có vẻ khó khăn nhưng Kubeadm tự động hóa hầu hết các phần cứng cho bạn. Mặc dù vẫn còn một số bước cần giải quyết, nhưng bạn sẽ không gặp phải vấn đề nếu bạn đảm bảo rằng các điều kiện tiên quyết được thỏa mãn trước khi bắt đầu.

Hầu hết các sự cố xảy ra vì không có sẵn thời gian chạy vùng chứa, br_netfilter mô-đun hạt nhân bị thiếu, trao đổi được bật hoặc nhu cầu cung cấp một phần bổ trợ mạng Pod đã bị bỏ qua. Việc khắc phục sự cố nên bắt đầu bằng cách kiểm tra những lỗi phổ biến này.

Kubeadm cung cấp cho bạn phiên bản Kubernetes mới nhất ngay từ chính dự án. Các bản phân phối thay thế có sẵn cho phép bạn bắt đầu một cụm nút đơn bằng một lệnh duy nhất. Minikube, MicroK8s và K3s là ba lựa chọn phổ biến. Mặc dù những thứ này thường dễ thiết lập và nâng cấp hơn, nhưng chúng đều có một chút khác biệt so với Kubernetes thượng nguồn. Sử dụng Kubeadm giúp bạn tiếp cận gần hơn với hoạt động nội bộ của Kubernetes và có thể áp dụng cho nhiều môi trường khác nhau.

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

[ad_2]

Nguồn: https://trungtamsuamaytinh.com
Danh mục: TIN HỌC

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