Điểm:1

Truy cập các dịch vụ Kubernetes trong cụm từ bên ngoài mạng cục bộ - Bare Metal

lá cờ in

Tôi đang chạy một môi trường "tính khả dụng cao" đa chủ đơn giản bằng kim loại trần với 2 chủ và 2 công nhân, cũng như một VM khác có HAProxy đóng vai trò là Cân bằng tải bên ngoài.

Câu hỏi của tôi là: có thể truy cập các dịch vụ (bảng điều khiển, ngnix, mysql (đặc biệt là mysql), v.v.) từ bên ngoài cụm, đưa chúng vào mạng với thiết lập mà tôi đang chạy này không?

Tôi đã thử sử dụng MetalLB trong môi trường này để hiển thị các dịch vụ dưới dạng LoadBalancer nhưng có vẻ như nó không hoạt động và vì tôi chưa quen với Kubernetes nên tôi không thể hiểu tại sao.

Chỉnh sửa: Hiện nó đã hoạt động, theo đề xuất của @ c4f4t0r, thay vì một Bộ cân bằng tải HAProxy bên ngoài, chính VM đó đã trở thành nút chính thứ ba và cũng như các nút khác, giờ đây chúng chạy mỗi máy ảo một phiên bản nội bộ của HAProxy và Keepalived, trong khi VM từng là LB bên ngoài giờ là điểm cuối chính để các máy ảo khác tham gia cụm, với MetalLB chạy bên trong cụm với bộ điều khiển xâm nhập nginx dẫn các yêu cầu đến dịch vụ đã được yêu cầu.



>>> Dưới đây là các bước tôi đã thực hiện để tạo môi trường cũng như tất cả các cấu hình được sử dụng trong quá trình thiết lập.



Thiết lập Cụm Kubernetes có tính khả dụng cao bằng kubeadm

Làm theo tài liệu này để thiết lập cụm Kubernetes có tính sẵn sàng cao bằng cách sử dụng Ubuntu 20.04 LTS.

Tài liệu này hướng dẫn bạn thiết lập một cụm có hai nút chính, một nút công nhân và nút cân bằng tải bằng HAProxy.

Môi trường kim loại trần

Vai trò FQDN địa chỉ IP hệ điều hành ĐẬP CPU
Cân bằng tải loadbalancer.example.com 192.168.44.100 Ubuntu 21.04 1G 1
Sư phụ kmaster1.example.com 10.84.44.51 Ubuntu 21.04 2G 2
Sư phụ kmaster2.example.com 192.168.44.50 Ubuntu 21.04 2G 2
Người làm việc kworker1.example.com 10.84.44.50 Ubuntu 21.04 2G 2
Người làm việc kworker2.example.com 192.168.44.51 Ubuntu 21.04 2G 2
  • Mật khẩu cho nguồn gốc tài khoản trên tất cả các máy ảo này là kubeadmin
  • Thực hiện tất cả các lệnh với tư cách người dùng root trừ khi có quy định khác

điều kiện tiên quyết

Nếu bạn muốn thử điều này trong môi trường ảo hóa trên máy trạm của mình

  • Đã cài đặt hộp ảo
  • Máy chủ có ít nhất 8 lõi
  • Máy chủ có bộ nhớ ít nhất 8G

Thiết lập nút cân bằng tải

Cài đặt Haproxy
cập nhật apt && cài đặt apt -y haproxy
Định cấu hình haproxy

Nối các dòng dưới đây vào /etc/haproxy/haproxy.cfg

giao diện người dùng kubernetes-frontend
    liên kết 192.168.44.100:6443
    chế độ tcp
    tùy chọn tcplog
    default_backend kubernetes-backend

phụ trợ kubernetes-phụ trợ
    chế độ tcp
    tùy chọn kiểm tra tcp
    thăng bằng vòng tròn
    máy chủ kmaster1 10.84.44.51:6443 kiểm tra giảm 3 tăng 2
    máy chủ kmaster2 192.168.44.50:6443 kiểm tra giảm 3 tăng 2
Khởi động lại dịch vụ haproxy
systemctl khởi động lại haproxy

Trên tất cả các nút kubernetes (kmaster1, kmaster2, kworker1)

Tắt tường lửa
ufw vô hiệu hóa
Vô hiệu hóa trao đổi
hoán đổi -a; sed -i '/hoán đổi/d' /etc/fstab
Cập nhật cài đặt sysctl cho mạng Kubernetes
con mèo >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
Cài đặt công cụ docker
{
  apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | thêm khóa apt -
  add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) ổn định"
  cập nhật apt && cài đặt apt -y docker-ce containerd.io
}

Thiết lập Kubernetes

Thêm kho lưu trữ Apt
{
  cuộn tròn -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | thêm khóa apt -
  echo "deb https://apt.kubernetes.io/ kubernetes-xenial main"> /etc/apt/sources.list.d/kubernetes.list
}
Cài đặt các thành phần Kubernetes
apt update && apt install -y kubeadm=1.19.2-00 kubelet=1.19.2-00 kubectl=1.19.2-00

Trên bất kỳ nút chính Kubernetes nào (Ví dụ: kmaster1)

Khởi tạo cụm Kubernetes
kubeadm init --control-plane-endpoint="192.168.44.100:6443" --upload-certs

Sao chép các lệnh để tham gia các nút chính và nút công nhân khác.

Triển khai hoa vải mạng (tôi đang sử dụng Weave thay vì Calico)
kubectl --kubeconfig=/etc/kubernetes/admin.conf tạo -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml

Tham gia các nút khác vào cụm (kmaster2 & kworker1)

Sử dụng các lệnh tham gia kubeadm tương ứng mà bạn đã sao chép từ đầu ra của lệnh kubeadm init trên bản gốc đầu tiên.

QUAN TRỌNG: Bạn cũng cần chuyển --apiserver-advertise-address cho lệnh tham gia khi tham gia nút chính khác.

Điểm:1
lá cờ nl

Nếu bạn đang sử dụng metalb, tôi nghĩ bạn không cần phải có vm bên ngoài với haproxy, bạn có thể cài đặt bộ điều khiển xâm nhập trong kubernetes và thay đổi loại dịch vụ của bộ điều khiển xâm nhập thành LoadBalancer.

Bây giờ Bạn sẽ có một ip bên ngoài trong mạng lan của mình để truy cập dịch vụ cục bộ của mình thông qua ip của bộ điều khiển xâm nhập.

(Internet) -> (Bộ định tuyến) -> Nat -> Metalb-Ip -> Ingress-controller -> k8s-service

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.