Score:1

การเข้าถึงบริการ Kubernetes ในคลัสเตอร์จากภายนอกเครือข่ายท้องถิ่น - Bare Metal

ธง in

ฉันกำลังเรียกใช้สภาพแวดล้อม "ความพร้อมใช้งานสูง" แบบมัลติมาสเตอร์แบบเรียบง่ายที่มีมาสเตอร์ 2 คนและพนักงาน 2 คน รวมถึง VM อื่นที่มี HAProxy ที่ทำหน้าที่เป็น Load Balancer ภายนอก

คำถามของฉันคือ: เป็นไปได้ที่จะเข้าถึงบริการต่างๆ (แดชบอร์ด, ngnix, mysql (โดยเฉพาะ mysql) ฯลฯ...) จากภายนอกคลัสเตอร์ โดยเปิดเผยให้เครือข่ายทราบด้วยการตั้งค่าที่ฉันใช้อยู่

ฉันได้ลองใช้ MetalLB ในสภาพแวดล้อมนี้เพื่อแสดงบริการเป็น LoadBalancer แต่ดูเหมือนว่าจะไม่ทำงาน และเนื่องจากฉันยังใหม่กับ Kubernetes ฉันจึงไม่เข้าใจว่าทำไม

แก้ไข: ใช้งานได้แล้ว ตามคำแนะนำของ @c4f4t0r แทนที่จะเป็น HAProxy Load Balancer ภายนอก VM เดียวกันนั้นกลายเป็นโหนดหลักที่สาม และเช่นเดียวกับโหนดอื่น ๆ ตอนนี้พวกเขาเรียกใช้แต่ละอินสแตนซ์ภายในของ HAProxy และ Keepalived ในขณะที่ VM ที่เคยเป็น LB ภายนอกตอนนี้กลายเป็น endpoint master สำหรับตัวอื่นๆ เพื่อเข้าร่วมคลัสเตอร์ โดย MetalLB จะทำงานภายในคลัสเตอร์ที่มีตัวควบคุม nginx ingress ที่นำคำขอไปยังบริการที่ได้รับการร้องขอ



>>> ด้านล่างนี้เป็นขั้นตอนที่ฉันได้ปฏิบัติตามเพื่อสร้างสภาพแวดล้อมตลอดจนการกำหนดค่าทั้งหมดที่ใช้ในการตั้งค่า



ตั้งค่าคลัสเตอร์ Kubernetes ที่พร้อมใช้งานสูงโดยใช้ kubeadm

ทำตามเอกสารประกอบนี้เพื่อตั้งค่าคลัสเตอร์ Kubernetes ที่พร้อมใช้งานสูงโดยใช้ อูบุนตู 20.04 LTS.

เอกสารนี้จะแนะนำคุณในการตั้งค่าคลัสเตอร์ที่มีโหนดหลัก 2 โหนด โหนดผู้ปฏิบัติงาน 1 โหนด และโหนดโหลดบาลานเซอร์โดยใช้ HAProxy

สภาพแวดล้อมโลหะเปลือย

บทบาท FQDN ไอพี ระบบปฏิบัติการ แกะ ซีพียู
โหลดบาลานเซอร์ loadbalancer.example.com 192.168.44.100 อูบุนตู 21.04 1G 1
ผู้เชี่ยวชาญ kmmaster1.example.com 10.84.44.51 อูบุนตู 21.04 2G 2
ผู้เชี่ยวชาญ kmmaster2.example.com 192.168.44.50 อูบุนตู 21.04 2G 2
คนงาน kworker1.example.com 10.84.44.50 อูบุนตู 21.04 2G 2
คนงาน kworker2.example.com 192.168.44.51 อูบุนตู 21.04 2G 2
  • รหัสผ่านสำหรับ ราก บัญชีบนเครื่องเสมือนเหล่านี้คือ คูบีดมิน
  • ดำเนินการคำสั่งทั้งหมดในฐานะผู้ใช้ root เว้นแต่จะระบุไว้เป็นอย่างอื่น

ข้อกำหนดเบื้องต้น

หากคุณต้องการลองสิ่งนี้ในสภาพแวดล้อมเสมือนจริงบนเวิร์กสเตชันของคุณ

  • ติดตั้ง Virtualbox แล้ว
  • เครื่องโฮสต์มีอย่างน้อย 8 คอร์
  • เครื่องโฮสต์มีหน่วยความจำอย่างน้อย 8G

ตั้งค่าโหนดตัวจัดสรรภาระงาน

ติดตั้ง Haproxy
ปรับปรุง apt && apt ติดตั้ง -y haproxy
กำหนดค่า haproxy

ต่อท้ายบรรทัดด้านล่างเพื่อ /etc/haproxy/haproxy.cfg

ส่วนหน้า kubernetes-ส่วนหน้า
    ผูก 192.168.44.100:6443
    โหมด tcp
    ตัวเลือก tcplog
    default_backend kubernetes-แบ็กเอนด์

แบ็กเอนด์ kubernetes-แบ็กเอนด์
    โหมด tcp
    ตัวเลือก tcp-ตรวจสอบ
    วงเวียนสมดุล
    เซิฟเวอร์ kmmaster1 10.84.44.51:6443 ตรวจสอบ ล้ม 3 ลุก 2
    เซิฟเวอร์ kmmaster2 192.168.44.50:6443 ตรวจสอบ ล้ม 3 ลุก 2
เริ่มบริการ haproxy ใหม่
systemctl รีสตาร์ท haproxy

บนโหนด Kubernetes ทั้งหมด (kmaster1, kmmaster2, kworker1)

ปิดใช้งานไฟร์วอลล์
ufw ปิดการใช้งาน
ปิดการแลกเปลี่ยน
สลับ -a; sed -i '/swap/d' /etc/fstab
อัปเดตการตั้งค่า sysctl สำหรับเครือข่าย Kubernetes
แมว >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
อฟ
sysctl -- ระบบ
ติดตั้งเครื่องเทียบท่า
{
  apt install -y apt-transport-https ca-certificates curl gnupg-agent ซอฟต์แวร์คุณสมบัติทั่วไป
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key เพิ่ม -
  add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) เสถียร"
  ปรับปรุง apt && apt ติดตั้ง -y docker-ce containerd.io
}

การตั้งค่า Kubernetes

เพิ่มที่เก็บ Apt
{
  ขด -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key เพิ่ม -
  echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
}
ติดตั้งส่วนประกอบ Kubernetes
ปรับปรุง apt && ติดตั้ง apt -y kubeadm=1.19.2-00 kubelet=1.19.2-00 kubectl=1.19.2-00

บนโหนดหลัก Kubernetes ตัวใดตัวหนึ่ง (เช่น kmmaster1)

เริ่มต้น Kubernetes Cluster
kubeadm init --control-plane-endpoint="192.168.44.100:6443" --upload-certs

คัดลอกคำสั่งเพื่อรวมโหนดหลักและโหนดผู้ปฏิบัติงานอื่นๆ

ปรับใช้ ผ้าดิบ เครือข่าย (ฉันใช้สานแทน Calico)
kubectl --kubeconfig=/etc/kubernetes/admin.conf สร้าง -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml

เข้าร่วมโหนดอื่นในคลัสเตอร์ (kmaster2 & kworker1)

ใช้คำสั่งรวม kubeadm ตามลำดับที่คุณคัดลอกจากเอาต์พุตของคำสั่ง kubeadm init บนมาสเตอร์ตัวแรก

สำคัญ: คุณต้องส่ง --apiserver-advertise-address ไปยังคำสั่ง join เมื่อคุณเข้าร่วมโหนดหลักอื่น

Score:1
ธง nl

หากคุณใช้ metalb ฉันคิดว่าคุณไม่จำเป็นต้องมี vm ภายนอกที่มี haproxy คุณสามารถติดตั้งตัวควบคุมขาเข้าใน kubernetes และเปลี่ยนประเภทบริการของตัวควบคุมขาเข้าเป็น LoadBalancer

ตอนนี้คุณจะมี ip ภายนอกใน lan ของคุณเพื่อเข้าถึงบริการในพื้นที่ของคุณผ่าน ip ของคอนโทรลเลอร์ขาเข้า

(อินเทอร์เน็ต) -> (เราเตอร์) -> Nat -> Metalb-Ip -> Ingress-controller -> k8s-service

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา