Linode Kubernetes Engine (LKE) là dịch vụ Kubernetes được Linode quản lý. Khi triển khai cụm LKE, bạn sẽ nhận được Kubernetes Master chạy các thành phần mặt phẳng điều khiển của cụm mà không mất thêm phí. Mặt phẳng điều khiển bao gồm Trình quản lý bộ điều khiển đám mây (CCM) của Linode. cung cấp cách để cụm của bạn truy cập các dịch vụ Linode bổ sung. CCM của Linode cung cấp quyền truy cập vào dịch vụ cân bằng tải của Linode, Linode NodeBalancers.
NodeBalancer cung cấp cho cụm Kubernetes của bạn một cách đáng tin cậy để hiển thị tài nguyên trên Internet công cộng. Mặt phẳng điều khiển LKE xử lý việc tạo và xóa NodeBalancer, đồng thời xác định chính xác các tài nguyên và mạng của chúng mà NodeBalancer sẽ định tuyến lưu lượng truy cập đến. Dịch vụ Kubernetes thuộc loại LoadBalancer được tạo, cụm Kubernetes của bạn sẽ tạo dịch vụ Linode NodeBalancer với sự trợ giúp của Linode CCM.
Hướng dẫn
Hướng dẫn này sẽ cho bạn thấy:
- cần có cấu hình tệp kê khai để thêm NodeBalancers vào cụm LKE của bạn.
- các chú thích có sẵn để định cấu hình thêm hành vi Linode NodeBalancers của bạn và cách kết hợp chúng vào tệp kê khai.
- các điều kiện tiên quyết và chú thích cần thiết để định cấu hình việc chấm dứt TLS trên NodeBalancers của cụm của bạn.
- cách định cấu hình mối quan hệ phiên cho các Pod trong một cụm.
Trước khi bắt đầu:
Hướng dẫn này giả định rằng bạn có cụm Kubernetes đang hoạt động được triển khai bằng Linode Kubernetes Engine (LKE). Bạn có thể triển khai cụm Kubernetes bằng LKE theo các cách sau:
Trình quản lý đám mây.
API của Linode v4.
Terraform, công cụ cơ sở hạ tầng phổ biến dưới dạng mã (IaC).
Một cụm LKE sẽ được cài đặt Trình quản lý bộ điều khiển đám mây của Linode trong mặt phẳng điều khiển của cụm. Nếu bạn không triển khai cụm Kubernetes của mình bằng LKE và muốn sử dụng Trình quản lý bộ điều khiển đám mây Linode, hãy xem Cài đặt Linode CCM trên Cụm Kubernetes không được quản lý. – Hướng dẫn.
Thêm NodeBalancers vào cụm Kubernetes của bạn
Để thêm bộ cân bằng tải bên ngoài vào cụm Kubernetes, bạn có thể thêm các dòng ví dụ vào tệp cấu hình mới hoặc phổ biến hơn là vào tệp Dịch vụ. Khi cấu hình được áp dụng cho cụm của bạn, Linode NodeBalancers sẽ được tạo và thêm vào của bạn. Cụm Kubernetes sẽ có thể truy cập được thông qua địa chỉ IP công cộng và NodeBalancers sẽ định tuyến lưu lượng truy cập bên ngoài đến Dịch vụ chạy trên các nút hoạt động tốt trong cụm của bạn.
Việc thanh toán cho Linode NodeBalancers bắt đầu ngay sau khi cấu hình mẫu được áp dụng thành công cho cụm Kubernetes của bạn.
Trong bất kỳ cấu hình NodeBalancer nào, người dùng nên nhớ rằng NodeBalancer có giới hạn kết nối tối đa là 10.000 kết nối đồng thời.
spec:
type: LoadBalancer
ports:
- name:
http port: 80
protocol: TCP
targetPort: 80
- Spec.type của LoadBalancer chịu trách nhiệm yêu cầu Kubernetes tạo Linode NodeBalancer.
- Các dòng còn lại cung cấp định nghĩa cổng cho Pod của Dịch vụ của bạn và ánh xạ cổng đến tới Cổng đích của vùng chứa.
Xem chi tiết NodeBalancers
Để xem chi tiết về việc chạy NodeBalancers trên cụm của bạn:
Nhận các dịch vụ đang chạy trên cụm của bạn:
kubectl get services

- Xem mục nhập của dịch vụ ví dụ, bạn có thể tìm thấy IP công khai của NodeBalancer trong cột EXTERNAL-IP.
- Cột PORT(S) hiển thị cổng đến của dịch vụ ví dụ và NodePort.
Xem chi tiết về dịch vụ ví dụ để truy xuất thông tin về NodeBalancer đã triển khai:
kubectl describe service example-service

Định cấu hình NodeBalancer của bạn bằng chú thích
Linode CCM chấp nhận các chú thích định cấu hình hành vi và cài đặt của NodeBalancers cơ bản trong cụm của bạn.
- Bảng bên dưới cung cấp danh sách tất cả các hậu tố chú thích có sẵn.
- Mỗi chú thích phải có tiền tố service.beta.kubernetes.io/linode-loadbalancer-. Ví dụ: giá trị hoàn chỉnh cho chú thích điều tiết là service.beta.kubernetes.io/linode-loadbalancer-throttle.
- Các giá trị chú thích như http phân biệt chữ hoa chữ thường.
Định cấu hình NodeBalancer để mã hóa TLS
Phần này mô tả cách thiết lập chấm dứt TLS trên Linode NodeBalancer của bạn để có thể truy cập Dịch vụ Kubernetes qua HTTPS.
Tạo bí mật loại TLS
Kubernetes cho phép bạn lưu trữ thông tin nhạy cảm trong một đối tượng Bí mật để sử dụng trong cụm của mình. Điều này rất hữu ích để lưu trữ những thứ như mật khẩu và mã thông báo API. Trong phần này, bạn sẽ tạo một bí mật Kubernetes để lưu trữ các chứng chỉ và khóa Bảo mật lớp vận chuyển (TLS). sau đó bạn sẽ sử dụng để định cấu hình việc chấm dứt TLS trên Linode NodeBalancer của mình.
Trong ngữ cảnh của Linode CCM, Bí mật rất hữu ích để lưu trữ các chứng chỉ và khóa Bảo mật lớp truyền tải (TLS). Chú thích linode-loadbalancer-tls yêu cầu lưu trữ các chứng chỉ và khóa TLS dưới dạng Bí mật Kubernetes với loại tls. phần này để tạo Bí mật TLS Kubernetes.
Các bước trong phần này sẽ tạo chứng chỉ TLS tự ký. Để tìm hiểu cách tạo chứng chỉ TLS từ cơ quan cấp chứng chỉ Let’s Encrypt (CA) và áp dụng nó cho ứng dụng chạy trên Kubernetes, hãy xem Định cấu hình cân bằng tải với mã hóa TLS trên. một cụm Kubernetes.
- Tạo khóa và chứng chỉ TLS bằng bộ công cụ TLS như OpenSSL. Đảm bảo thay đổi giá trị CN và O thành giá trị của miền trang web của riêng bạn.
openssl req -newkey rsa:4096 \
-x509 \
-sha256 \
-days 3650 \
-nodes \
-out tls.crt \
-keyout tls.key \
-subj "/CN=mywebsite.com/O=mywebsite.com"
- Tạo bí mật bằng cách sử dụng lệnh tạo bí mật tls. Đảm bảo bạn thay thế $SECRET_NAME bằng tên mà bạn muốn đặt cho bí mật của mình. Đây sẽ là cách bạn tham chiếu bí mật trong bảng kê khai Dịch vụ của mình.
kubectl create secret tls $SECRET_NAME --cert tls.crt --key tls.key
Bạn có thể kiểm tra để đảm bảo Bí mật của mình đã được lưu trữ thành công bằng cách sử dụng mô tả:
kubectl describe secret $SECRET_NAME
Bạn sẽ thấy đầu ra như sau:

Định cấu hình TLS trong một dịch vụ
Theo mặc định, Kubernetes không hiển thị các Dịch vụ có chấm dứt TLS qua HTTPS, để sử dụng https, bạn cần hướng dẫn Dịch vụ sử dụng đúng cổng bằng cách sử dụng các chú thích được yêu cầu. Bạn có thể thêm đoạn mã sau vào tệp Dịch vụ để bật. Chấm dứt TLS trên NodeBalancer của bạn:
…
metadata:
annotations:
service.beta.kubernetes.io/linode-loadbalancer-default-protocol: http
service.beta.kubernetes.io/linode-loadbalancer-port-443: '{ "tls-secret-name": "example-secret", "protocol": "https" }'
…
- Chú thích service.beta.kubernetes.io/linode-loadbalancer-default-protocol của anh ấy định cấu hình giao thức mặc định của NodeBalancer.
- service.beta.kubernetes.io/linode-loadbalancer-port-443 chỉ định cổng 443 làm cổng được định cấu hình. Giá trị của chú thích này là đối tượng JSON thiết kế tên bí mật TLS để sử dụng (ví dụ-bí mật) và giao thức để sử dụng. sử dụng cho cổng đang được cấu hình (https).
Nếu bạn có nhiều Bí mật và cổng cho các môi trường khác nhau (thử nghiệm, chạy thử, v.v.), bạn có thể xác định nhiều cặp cổng và bí mật:
…
metadata:
annotations:
service.beta.kubernetes.io/linode-loadbalancer-default-protocol: http
service.beta.kubernetes.io/linode-loadbalancer-port-443: '{ "tls-secret-name": "example-secret", "protocol": "https" }'
service.beta.kubernetes.io/linode-loadbalancer-port-8443: '{ "tls-secret-name": "example-secret-staging", "protocol": "https" }'
…
Định cấu hình mối quan hệ phiên cho nhóm cụm
kube-proxy sẽ luôn cố gắng chuyển lưu lượng truy cập proxy đến một Pod phụ trợ ngẫu nhiên. Để hướng lưu lượng truy cập đến cùng một Pod, bạn có thể sử dụng cơ chế sessionAffinity. Khi được đặt thành clientIP, sessionAffinity sẽ đảm bảo rằng tất cả lưu lượng truy cập từ cùng một IP sẽ được chuyển hướng. vào cùng một Pod. Bạn có thể thêm các dòng ví dụ vào tệp cấu hình Dịch vụ.
spec:
type: LoadBalancer
selector:
app: example-app
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 100
Xóa NodeBalancers khỏi cụm Kubernetes của bạn
Để xóa NodeBalancer và Dịch vụ mà nó đại diện, bạn có thể sử dụng tệp kê khai Dịch vụ mà bạn đã sử dụng để tạo NodeBalancer. Chỉ cần sử dụng lệnh xóa và cung cấp tên tệp của bạn kèm theo cờ f:
kubectl delete -f example-service.yaml
Tương tự, bạn có thể xóa Dịch vụ theo tên:
kubectl delete service example-service
Sau khi xóa dịch vụ của bạn, NodeBalancer tương ứng của nó sẽ bị xóa khỏi tài khoản Linode của bạn.
Nếu tệp Dịch vụ của bạn sử dụng chú thích lưu giữ, NodeBalancer cơ bản sẽ không bị xóa khỏi tài khoản Linode của bạn. Hãy xem phần tham khảo chú thích để biết chi tiết.
Nguồn: https://techdocs.akamai.com/cloud-computing/docs/get-started-with-load-balancing-on-an-lke-cluster