ค้นหาเว็บไซต์

วิธีติดตั้งคลัสเตอร์ Kubernetes บน CentOS 7


Kubernetes บริจาคโดย Google ให้กับชุมชน Opensource และปัจจุบันกลายเป็นเครื่องมือการจัดการคอนเทนเนอร์ที่ได้รับเลือก สามารถจัดการและประสานไม่เพียงแค่รันไทม์นักเทียบท่าเท่านั้น แต่ยังรวมถึงรันไทม์คอนเทนเนอร์และ Rkt อีกด้วย

โดยทั่วไปคลัสเตอร์ Kubernetes โดยทั่วไปจะมีโหนดหลักและโหนดผู้ปฏิบัติงานหรือลูกน้องหลายโหนด จากนั้นโหนดของผู้ปฏิบัติงานจะได้รับการจัดการจากโหนดหลัก ดังนั้นจึงมั่นใจได้ว่าคลัสเตอร์จะได้รับการจัดการจากจุดศูนย์กลาง

สิ่งสำคัญที่ต้องกล่าวถึงก็คือ คุณยังสามารถปรับใช้คลัสเตอร์ Kubernetes โหนดเดียวได้ ซึ่งโดยทั่วไปจะแนะนำสำหรับปริมาณงานที่เบามากและไม่ใช่การใช้งานจริง ในการดำเนินการนี้ คุณสามารถใช้ Minikube ซึ่งเป็นเครื่องมือที่เรียกใช้คลัสเตอร์ Kubernetes โหนดเดียวในเครื่องเสมือนบนโหนดของคุณ

แนะนำให้อ่าน: วิธีติดตั้งคลัสเตอร์ Kubernetes บน CentOS 8

สำหรับบทช่วยสอนนี้ เราจะอธิบายการติดตั้งคลัสเตอร์ Kubernetes แบบหลายโหนดบน CentOS 7 Linux บทช่วยสอนนี้เป็นแบบบรรทัดคำสั่ง ดังนั้นคุณจะต้องเข้าถึงหน้าต่างเทอร์มินัลของคุณ

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

  1. เซิร์ฟเวอร์หลายตัวที่ใช้ Centos 7 (1 โหนดหลัก, 2 โหนดผู้ปฏิบัติงาน) ขอแนะนำให้ โหนดหลัก ของคุณมี CPU อย่างน้อย 2 ตัว แม้ว่าจะไม่ใช่ข้อกำหนดที่เข้มงวดก็ตาม
  2. การเชื่อมต่ออินเทอร์เน็ตบนโหนดทั้งหมดของคุณ เราจะดึงแพ็กเกจ Kubernetes และ docker จากที่เก็บ ในทำนองเดียวกัน คุณจะต้องตรวจสอบให้แน่ใจว่าได้ติดตั้งตัวจัดการแพ็คเกจ yum เป็นค่าเริ่มต้นและสามารถดึงแพ็คเกจจากระยะไกลได้
  3. คุณจะต้องเข้าถึงบัญชีที่มีสิทธิ์ sudo หรือ root ในบทช่วยสอนนี้ ฉันจะใช้บัญชีรูทของฉัน

คลัสเตอร์ 3 โหนดของเราจะมีลักษณะดังนี้:

การติดตั้งคลัสเตอร์ Kubernetes บน Master-Node

เพื่อให้ Kubernetes ทำงาน คุณจะต้องมีกลไกการสร้างคอนเทนเนอร์ สำหรับการติดตั้งนี้ เราจะใช้ นักเทียบท่า เนื่องจากเป็นการติดตั้งที่ได้รับความนิยมมากที่สุด

ขั้นตอนต่อไปนี้จะทำงานบน Master-Node

ขั้นตอนที่ 1: เตรียมชื่อโฮสต์ ไฟร์วอลล์ และ SELinux

บนโหนดหลักของคุณ ให้ตั้งชื่อโฮสต์ และหากคุณไม่มีเซิร์ฟเวอร์ DNS ให้อัปเดตไฟล์ /etc/hosts ของคุณด้วย

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

คุณสามารถ ping worker-node-1 และ worker-node-2 เพื่อทดสอบว่าไฟล์โฮสต์ที่อัปเดตของคุณปกติดีหรือไม่โดยใช้คำสั่ง ping

ping 10.128.0.29
ping 10.128.0.30

จากนั้น ให้ปิดการใช้งาน SElinux และอัปเดตกฎไฟร์วอลล์ของคุณ

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

ตั้งค่ากฎไฟร์วอลล์ต่อไปนี้บนพอร์ต ตรวจสอบให้แน่ใจว่าแต่ละคำสั่ง firewall-cmd ส่งคืนสำเร็จ

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd –reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

ขั้นตอนที่ 2: ตั้งค่า Kubernetes Repo

คุณจะต้องเพิ่มที่เก็บ Kubernetes ด้วยตนเอง เนื่องจากไม่ได้ติดตั้งไว้ตามค่าเริ่มต้นใน CentOS 7

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

ขั้นตอนที่ 3: ติดตั้ง Kubeadm และ Docker

เมื่อ repo แพ็คเกจพร้อมแล้ว คุณสามารถดำเนินการต่อและติดตั้งแพ็คเกจ kubeadm และ docker ได้

yum install kubeadm docker -y 

เมื่อการติดตั้งเสร็จสมบูรณ์ ให้เปิดใช้งานและเริ่มบริการทั้งสอง

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

ขั้นตอนที่ 4: เริ่มต้น Kubernetes Master และตั้งค่าผู้ใช้เริ่มต้น

ตอนนี้เราพร้อมที่จะเริ่มต้น kubernetes master แล้ว แต่ก่อนหน้านั้นคุณต้องปิดการใช้งาน swap เพื่อรันคำสั่ง “kubeadm init

swapoff -a

การเริ่มต้น Kubernetes Master เป็นกระบวนการอัตโนมัติเต็มรูปแบบที่ได้รับการจัดการโดยคำสั่ง “kubeadm init“ ที่คุณจะเรียกใช้

kubeadm init

คุณอาจต้องการคัดลอกบรรทัดสุดท้ายและบันทึกไว้ที่ไหนสักแห่ง เนื่องจากคุณจะต้องเรียกใช้บน โหนดผู้ปฏิบัติงาน

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

เคล็ดลับ: บางครั้งคำสั่งนี้อาจบ่นเกี่ยวกับ ข้อโต้แย้ง (args) ที่ผ่านไป ดังนั้นให้แก้ไขเพื่อหลีกเลี่ยง ข้อผิดพลาด ดังนั้น คุณจะลบอักขระ '\' ที่มาพร้อมกับ --token และคำสั่งสุดท้ายของคุณจะมีลักษณะเช่นนี้

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

เมื่อเริ่มต้น Kubernetes ได้สำเร็จแล้ว คุณจะต้องอนุญาตให้ผู้ใช้เริ่มใช้คลัสเตอร์ ในกรณีของเรา เราต้องการเรียกใช้การติดตั้งนี้ในฐานะผู้ใช้ รูท ดังนั้นเราจะดำเนินการต่อและรันคำสั่งเหล่านี้ในฐานะรูท คุณสามารถเปลี่ยนเป็นผู้ใช้ที่เปิดใช้งาน sudo ที่คุณต้องการและเรียกใช้ด้านล่างโดยใช้ sudo

หากต้องการใช้ root ให้รัน:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

หากต้องการใช้ ผู้ใช้ที่เปิดใช้งาน sudo ให้เรียกใช้:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

ตรวจดูว่าคำสั่ง kubectl ทำงานอยู่หรือไม่

kubectl get nodes

ณ จุดนี้ คุณจะสังเกตเห็นด้วยว่าสถานะของ โหนดหลัก คือ 'ไม่พร้อม' เนื่องจากเรายังไม่ได้ปรับใช้เครือข่ายพ็อดกับคลัสเตอร์

เครือข่ายพ็อดคือเครือข่ายซ้อนทับสำหรับคลัสเตอร์ที่ใช้งานอยู่ด้านบนของเครือข่ายโหนดปัจจุบัน ได้รับการออกแบบมาเพื่อให้สามารถเชื่อมต่อข้ามพ็อดได้

ขั้นตอนที่ 5: ตั้งค่าเครือข่าย Pod ของคุณ

การปรับใช้คลัสเตอร์เครือข่ายเป็นกระบวนการที่มีความยืดหยุ่นสูง ขึ้นอยู่กับความต้องการของคุณและมีตัวเลือกมากมายให้เลือก เนื่องจากเราต้องการให้การติดตั้งของเราง่ายที่สุดเท่าที่จะเป็นไปได้ เราจะใช้ปลั๊กอิน Weavenet ซึ่งไม่ต้องการการกำหนดค่าหรือโค้ดเพิ่มเติมใดๆ และให้ที่อยู่ IP หนึ่งรายการต่อพ็อดซึ่งเหมาะสำหรับเรา หากคุณต้องการดูตัวเลือกเพิ่มเติม โปรดตรวจสอบที่นี่

คำสั่งเหล่านี้จะมีความสำคัญในการตั้งค่าเครือข่ายพ็อด

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

ตอนนี้ หากคุณตรวจสอบสถานะของ โหนดหลัก ของคุณ มันควรจะเป็น 'พร้อม'

kubectl get nodes

ต่อไป เราจะเพิ่มโหนดผู้ปฏิบัติงานลงในคลัสเตอร์

การตั้งค่าโหนดผู้ปฏิบัติงานเพื่อเข้าร่วมคลัสเตอร์ Kubernetes

ขั้นตอนต่อไปนี้จะทำงานบนโหนดผู้ปฏิบัติงาน ขั้นตอนเหล่านี้ควรรันบนทุก โหนดผู้ปฏิบัติงาน เมื่อเข้าร่วมคลัสเตอร์ Kubernetes

ขั้นตอนที่ 1: เตรียมชื่อโฮสต์ ไฟร์วอลล์ และ SELinux

บน worker-node-1 และ worker-node-2 ให้ตั้งชื่อโฮสต์และในกรณีที่คุณไม่มีเซิร์ฟเวอร์ DNS ให้อัปเดตหลักและผู้ปฏิบัติงานของคุณด้วย โหนดบนไฟล์ /etc/hosts

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

คุณสามารถ ping master-node เพื่อทดสอบว่าไฟล์โฮสต์ที่อัปเดตของคุณปกติดีหรือไม่

จากนั้น ให้ปิดการใช้งาน SElinux และอัปเดตกฎไฟร์วอลล์ของคุณ

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

ตั้งค่ากฎไฟร์วอลล์ต่อไปนี้บนพอร์ต ตรวจสอบให้แน่ใจว่าคำสั่ง firewall-cmd ทั้งหมดคืนความสำเร็จ

firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd  --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

ขั้นตอนที่ 2: ตั้งค่า Kubernetes Repo

คุณจะต้องเพิ่มที่เก็บ Kubernetes ด้วยตนเอง เนื่องจากไม่ได้ติดตั้งไว้ล่วงหน้าบน CentOS 7

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

ขั้นตอนที่ 3: ติดตั้ง Kubeadm และ Docker

เมื่อ repo แพ็คเกจพร้อมแล้ว คุณสามารถดำเนินการต่อและติดตั้งแพ็คเกจ kubeadm และ docker ได้

yum install kubeadm docker -y 

เริ่มต้นและเปิดใช้งานบริการทั้งสอง

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

ขั้นตอนที่ 4: เข้าร่วมโหนดผู้ปฏิบัติงานกับคลัสเตอร์ Kubernetes

ตอนนี้เราต้องการโทเค็นที่ kubeadm สร้างขึ้นเพื่อเข้าร่วมคลัสเตอร์ คุณสามารถคัดลอกและวางลงใน node-1 และ node-2 ได้ หากคุณคัดลอกไว้ที่ใดที่หนึ่ง

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

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

kubectl get nodes

หากขั้นตอนทั้งหมดทำงานได้สำเร็จ คุณควรเห็น node-1 และ node-2 อยู่ในสถานะพร้อมบน master-node

การอ่านที่แนะนำ: วิธีปรับใช้ Nginx บนคลัสเตอร์ Kubernetes

ณ จุดนี้ เราได้ทำการติดตั้งคลัสเตอร์ Kubernetes บน Centos 7 สำเร็จแล้ว และเราได้ โหนดผู้ปฏิบัติงาน สองตัวที่ออนบอร์ดได้สำเร็จ ตอนนี้คุณสามารถเริ่มสร้างพ็อดและปรับใช้บริการของคุณได้