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.