bmson7112 / TTS-VTNet

1 stars 0 forks source link

Kubernetes the hard way #8

Open bmson7112 opened 1 year ago

bmson7112 commented 1 year ago

Prerequisites

  1. Cài đặt Google CLoud SDK

    image

  1. Cài đặt compute region và compute zone mặc định:

    image

Provisioning Compute Resources

  1. Networking

    • Sử dụng mạng VPC networking để lưu trữ cụm k8s

      image

  1. Firewall Rules

    • Tạo bộ quy tắc tường lừa cho phép các thành phần nội bộ có thể giao tiếp với nhau ở mọi giao thức

      image

  1. Địa chỉ IP public k8s

    • Tạo địa chỉ IP tĩnh gắn vào bộ load balancer bên ngoài phía trước API Server

      image

  1. Compute Instances

    • Tạo các host bên trong cụm. Tạo 2 node controller và 2 node worker

      image

      image

Provisioning a CA and Generating TLS Certificates

  1. Certificate Authority

    • Cung cấp 1 Certiicate Authority để có thể sử dụng để tạo các TLS certificate bổ sung
    • Tạo tệp cấu hình CA, certificate, và private key, sau đó kiểm tra coi các tiệp đã đươc tạo hay chưa

      image

  2. Client and Server Certificates

    • Tạo Client và Server Certificate cho các thành phần trong cụm k8s
    • Tạo admin client certificate và private key, sau đó kiểm tra các file cấu hình admin-key.pem admin.pem có được tạo hay không

      image

bmson7112 commented 1 year ago

Chapter 05: Generating Kubernetes Configuration Files for Authentication

Tạo các tệp cấu hình kubeconfigs để cho phép các kubernetes client có thể giao tiếp được ( định vị và xác thực ) với API Server

  1. Cấu hình xác thực Client

    • Tạo các tệp config cho Controller manager, kubelet, kube-proxy, scheduler client và admin user
    • Mỗi kubeconfig đều yêu cầu có API Server để kết nối. Để hỗ trợ tính sẵn sàng cao thì 1 địa chỉ IP sẽ được cấp cho external load balancer đứng trước máy chủ API Server
    • Để lấy địa chỉ IP tĩnh của kubernetes-the-hard-way, ta dùng lệnh như dưới
  2. The kubelet Kubernetes Configuration File

    • Khi tạo tệp kubeconfig cho Kubelets, phải sử dụng client certificate khớp với tên nút của Kubelet. Điều này sẽ đảm bảo Kubelets được ủy quyền chính xác bởi Kubernetes Node Authorizer.
    • Ta tạo tệp config cho mỗi worker node, kết quả sẽ tạo ra các file worker-0.kubeconfig worker-1.kubeconfig

      image

  3. The kube-proxy Kubernetes Configuration File

    • Tạo file config cho kube-proxyservice, kết quả sẽ tạo ra tệp cấu hình kube-proxy.kubeconfig

      image

  4. The kube-controller-manager Kubernetes Configuration File

    • Tạo file cấu hình cho kube-controller-manager service, kết quả sẽ tạo ra file cấu hình kube-controller-manager.kubeconfig

      image

  5. The kube-scheduler Kubernetes Configuration File

    • Tạo file cấu hình cho kube-scheduler, kết quả sẽ có file cấu hình kube-scheduler.kubeconfig

      image

  6. The admin Kubernetes Configuration File

    • Tạo file cấu hình cho admin user

      image

  7. Áp dụng các file cấu hình cho các node

    • Copy các tệp cấu hình kubeletkube-proxy cho các worker node

      image

bmson7112 commented 1 year ago

Chapter 6: Generating the Data Encryption Config and Key

  1. The Encryption Config File

    • Tạo file config encryption encryption-config.yaml

      image

    • Sau đó copy file config vừa tạo vào các controller node của cụm

      image

bmson7112 commented 1 year ago

Chapter 7: Bootstrapping the etcd Cluster

  1. Verification

    • Liệt kê danh sách etcd member trong cluster

      image

  2. Thực hiện tương tự với instance controller còn lại

bmson7112 commented 1 year ago

Chapter 8: Bootstrapping the Kubernetes Control Plane

1, Tạo thư mục cấu hình cho K8s

  1. Download and Install the Kubernetes Controller Binaries

    • Tải về tệp nhị phân k8s

      image

  1. Cấu hình API Server

    image

  1. Cấu hình Kubernetes Controller Manager

    • Chuyển file config vào thư mục của nó bằng lệnh sudo mv kube-controller-manager.kubeconfig /var/lib/kubernetes/
    • Tạo file kube-controller-manager.service

      image

  2. Cấu hình Kubernetes Scheduler

    • Chuyển file kube-scheduler kubeconfig vào thư mucj của nó bằng lệnh sudo mv kube-scheduler.kubeconfig /var/lib/kubernetes/
    • Tạo file cấu hình kube-scheduler.yaml

      image

  1. Khởi động Controller Service

    image

  2. Enable HTTP Health Checks

    • Google Network LoadBalancer được sử dụng để phân phối lưu lượng truy cập tới 2 API Server cho phép chúng có thể chấm dứt kết nối TLS và xác thực client certificate. Network Loadbalancer chỉ hỗ trợ kiểm tra tình trạng HTTP, không thể sử dụng điểm cuối HTTPS do API Server hiển thị. Để thay thế, máy chủ nginx được sử dụng để kiểm tra tình trạng HTTP. Trong phàn này, nginx sẽ được cài đặt và cấu hình để chấp nhận kiểm tra tình trang HTTP trên cổng 80 và ủy quyền kết nối với câc API Server trên https://127.0.0.1:6443/healthz
    • Cài đặt web server để kiểm tra tình trạng HTTP bằng lệnh sudo apt-get install -y nginx và thiết lập cấu hình để khởi động nginx

      image

  3. Verification

    • Kiểm tra thông tin của Control Plane

      image

  1. RBAC for Kubelet Authorization

    • Cấu hình quyền RBAC để cho phép API Server Kubernetes truy cập API Kubelet trên mỗi nút worker. Cần có quyền truy cập vào API Kubelet để truy xuất số liệu, nhật ký và thực thi các lệnh trong pod.
    • Đặt Kubelet --authorization-mode flag thành Webhook. Chế độ webhook sử dụng API SubjectAccessReview để xác định ủy quyền.
    • Tạo system:kube-apiserver-to-kubelet ClusterRole với quyền truy cập API Kubelet và thực hiện hầu hết các tác vụ phổ biến liên quan đến quản lý pod

      image

  1. The Kubernetes Frontend Load Balancer

    • Tạo 1 bộ cân bằng tải bên ngoài cho API Server. Địa chỉ IP tĩnh của kubernetes-the-hard-way sẽ được gắn vào bộ cân bằng tải
    • Cung cấp Network LoadBalancer, tạo tài nguyên cân bằng tải bên ngoài

      image

  2. Verification

    • Truy xuất địa chỉ kubernetes-the-hard-way

      image

bmson7112 commented 1 year ago

Chapter 9: Bootstrapping the Kubernetes Worker Nodes

  1. Provisioning a Kubernetes Worker Node

    • Cài dặt các phụ thuộc hệ điều hành bằng lệnh { sudo apt-get update sudo apt-get -y install socat conntrack ipset } Lệnh nhị phân socat sẽ hỗ trợ kubectl port-forward
  2. Disable Swap

    • Theo mặc định, kubelet sẽ ko hoạt đông nếu tính năng swap đang hoạt động. Vì vậy nên tắt Swap để đảm bảo Kubernetes có thể hoạt đông 1 cách bình thường
    • KIểm tra Swap có đang được kích hoạt hay không bằng lệnh sudo swapon --show

      image

    Trong trường hợp này đầu ra trống, có nghĩa là Swap không được kích hoạt

  3. Download and Install Worker Binaries

    image

  1. Configure CNI Networking

    • TRuy suất phạm vị CIRD chọ phiên bản instance hiện tại

      image

  1. Configure containerd

    • Tạo file cấu hình containerd bằng lệnh sudo mkdir -p /etc/containerd/

      image

  1. Configure the Kubelet

    image

Cấu hình resolvConfđược sử dụng để tránh vòng lặp khi sử dụng CoreDNS để khám phá dịch vụ trên các hệ thống chạy systemd-resolved.

  1. Configure the Kubernetes Proxy

    • Tạo file cấu hình kube-proxy-config.yaml

      image

  1. Start the Worker Services

    image

  2. Verification

Ở đây ta có thẻ thấy các node controller đều tham gia quản lý cả 2 worker node trong cụm

bmson7112 commented 1 year ago

Thứ tự chính trong tạo cụm kubernetes the hard way