Open bmson7112 opened 1 year ago
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
Cấu hình xác thực Client
Controller manager
, kubelet
, kube-proxy
, scheduler
client và admin
userkubernetes-the-hard-way
, ta dùng lệnh như dưới The kubelet Kubernetes Configuration File
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
The kube-proxy Kubernetes Configuration File
Tạo file config cho kube-proxy
service, kết quả sẽ tạo ra tệp cấu hình kube-proxy.kubeconfig
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
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
The admin Kubernetes Configuration File
Tạo file cấu hình cho admin user
Áp dụng các file cấu hình cho các node
Copy các tệp cấu hình kubelet
và kube-proxy
cho các worker node
Copy các tệp cấu hình kube-controller-manager
và kube-scheduler
cho các node controller
encryption key
và encryption config
để mã hóa k8s Secret
encryption key
bằng lệnh ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
The Encryption Config File
Tạo file config encryption encryption-config.yaml
Sau đó copy file config vừa tạo vào các controller node của cụm
Các thành phần trong cụm k8s là stateless và được lưu trữ trong etcd
SSH vào các instance controller
Tải xuống và cài đặt tệp nhị phân etcd
qua github
Giải nén và cài đặt etcd
server và etclcli
bằng lệnh { tar -xvf etcd-v3.4.15-linux-amd64.tar.gz sudo mv etcd-v3.4.15-linux-amd64/etcd* /usr/local/bin/ }
Cấu hình etcd server
Tạo file cấu hình hệ thôngs etcd.service
Khởi động etcd server
Verification
Liệt kê danh sách etcd member trong cluster
Thực hiện tương tự với instance controller còn lại
1, Tạo thư mục cấu hình cho K8s
sudo mkdir -p /etc/kubernetes/config
để tạo thư mục cấu hình Download and Install the Kubernetes Controller Binaries
Tải về tệp nhị phân k8s
Cài đặt tệp vào các máy ảo
Cấu hình API Server
Tạo file cấu hình kube-apiserver.service
Cấu hình Kubernetes Controller Manager
sudo mv kube-controller-manager.kubeconfig /var/lib/kubernetes/
Tạo file kube-controller-manager.service
Cấu hình Kubernetes Scheduler
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
Tạo file systemd kube-scheduler.service
Khởi động Controller Service
Enable HTTP Health Checks
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
Verification
Kiểm tra thông tin của Control Plane
Kiểm tra tình trạng hoạt động của nginx HTTP proxy
RBAC for Kubelet Authorization
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
kubernetes
bằng client certificate như được xác định bởi --kubelet-client-certificate
flag.Liên kết system:kube-apiserver-to-kubelet
ClusterRole với k8s user
The Kubernetes Frontend Load Balancer
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
Verification
Truy xuất địa chỉ kubernetes-the-hard-way
Tạo 1 HTTP request lấy thông tin phiên bản k8s
runc
, container
, networking plugin
, containerd
, kebelet
và kubeproxy
vào mỗi nodeSSH vào lần lượt các worker node
Provisioning a Kubernetes Worker Node
{ sudo apt-get update sudo apt-get -y install socat conntrack ipset }
Lệnh nhị phân socat sẽ hỗ trợ kubectl port-forward
Disable Swap
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ườngKIểm tra Swap
có đang được kích hoạt hay không bằng lệnh sudo swapon --show
Trong trường hợp này đầu ra trống, có nghĩa là Swap
không được kích hoạt
Download and Install Worker Binaries
Tạo các thư mục cài đặt cấu hình
Cài đặt các tệp nhị phân worker
Configure CNI Networking
TRuy suất phạm vị CIRD chọ phiên bản instance hiện tại
Tạo file cấu hình brige network
Tạo file cấu hình loopback network
Configure containerd
Tạo file cấu hình containerd
bằng lệnh sudo mkdir -p /etc/containerd/
Tạo file containerd.service
Configure the Kubelet
Tạo file cấu hình kubelet-config.yaml
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
.
Tạo file cấu hình hệ thống kubelet.service
Configure the Kubernetes Proxy
Tạo file cấu hình kube-proxy-config.yaml
Tạo file caáu hình hệ thống kube-proxy.service
Start the Worker Services
Verification
Liệt kê các node k8s đã đăng ký
Ở đây ta có thẻ thấy các node controller đều tham gia quản lý cả 2 worker node trong cụm
Tạo các máy ảo, ở đây là 2 máy worker, 2 máy controller,
Tạo các file cấu hình ủy quyền để người dùng( ở đây là máy của em) có thể truy cập vào được trong cụm ( kubernetes client) bằng cachs sử dụng command “kubectl”
Tạo các file cấu hình API Server, etcd, controller management, scheduler ,kube proxy, kubelet ủy quyền cho phía client, user admin
Mỗi node thì sẽ cung cấp 1 địa chỉ IP cho API Server để gán cho bộ cân bằng tải bên ngoài cụm để
Khởi đông các node worker bằng việc tạo các file cấu hình kubelet. kubeproxy của chúng, rồi cài đặt vào node 1 dải mạng nội bộ CIRD
Còn đối với các node controller thì sẽ là các file cấu hình kube controller manage và kube schedule
Khởi động cụm etcd
Khởi động kubernetes control plane, tạo 1 bộ cân bằng tải bên ngoài để hiển thị các thông tin của API Server cho phía client. Ngoài ra còn phải cấu hình RBAC để API Server như các node controller có thể giao tiếp được với kuberlet của các node worker
Tạo tệp kubeconfig để người dùng có thể sử dụng kubectl từ phía mình
ĐỊnh tuyến kết nối mạng giữa các pod trong cụm
Prerequisites
Cài đặt Google CLoud SDK
Cài đặt compute region và compute zone mặc định:
Provisioning Compute Resources
Networking
Sử dụng mạng VPC networking để lưu trữ cụm k8s
Subnet phải đủ lớn để gán địa chỉ IP cho mỗi node ở trong cụm nên ta tạo subnet
kubernetes
nằm trongkubernetes-the-hard-way
VPC networkFirewall 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
Tạo tưởng lửa cho phép SSH, ICMP, and HTTPS từ bên ngoài
Đị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
Xác nhận rằng địa chỉ IP tĩnh đã được tạo
Compute Instances
Tạo các host bên trong cụm. Tạo 2 node controller và 2 node worker
Kiểm tra lại danh sách các thành phần mới được tạo
Provisioning a CA and Generating TLS Certificates
Certificate Authority
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
Client and Server Certificates
Tạo
admin
client certificate và private key, sau đó kiểm tra các file cấu hìnhadmin-key.pem
admin.pem
có được tạo hay khôngTạo Kubelet Client Certificates
Kubernetes sử dụng special-purpose authorization mode có tên là Node Authorizer, cho phép cụ thể các yêu cầu API do Kubelets thực hiện. Để được Node Authorizer ủy quyền, Kubelets phải sử dụng thông tin đăng nhập xác định chúng nằm trong nhóm
system:nodes
, với tên người dùng làsystem:node:<nodeName>
. => Chúng ta sẽ tạo chứng chỉ cho mỗi nodeworker
Kubernetes đáp ứng các yêu cầu của Node AuthorizerTương tự tạo Controller Manager Client Certificate, Kube Proxy Client Certificate,Scheduler Client Certificate, Kubernetes API Server Certificate, Service Account Key Pair
Phân phối Client và Server Certificates đến các node trong cụm