ການສ້າງຄລັສເຕີ Kubernetes ເທິງ Fedora
|
ໜ້ານີ້ອະທິບາຍກ່ຽວກັບແຫຼ່ງຊອບແວຈາກພາກສ່ວນທີສາມ ທີ່ບໍ່ມີສ່ວນກ່ຽວຂ້ອງ ຫຼື ໄດ້ຮັບການຮັບຮອງຢ່າງເປັນທາງການຈາກໂຄງການ Fedora.ກະລຸນານຳໃຊ້ດ້ວຍການຕັດສິນໃຈຂອງທ່ານເອງ.Fedora ແນະນຳໃຫ້ໃຊ້ຊອບແວເສລີ ແລະ ໂອເພນຊອດ ແລະ ໃຫ້ຫຼີກເວັ້ນຊອບແວທີ່ມີຂໍ້ຈຳກັດດ້ານສິດທິບັດ. |
ການສ້າງຄລັສເຕີ Kubernetes ດ້ວຍ kubeadm ໂດຍໃຊ້ Fedora rpms
kubeadmລຸ່ມນີ້ແມ່ນຄູ່ມືການສ້າງຄລັສເຕີ Kubernetes ທີ່ສາມາດໃຊ້ງານໄດ້ເທິງເຄື່ອງ Fedora ເຄື່ອງດຽວ ເຊິ່ງເໝາະສົມສຳລັບການຮຽນຮູ້ ແລະ ການທົດລອງ. ຄູ່ມືນີ້ບໍ່ໄດ້ມີຈຸດປະສົງເພື່ອສ້າງສະພາບແວດລ້ອມສຳລັບການໃຊ້ງານຈິງ.
ຄູ່ມືລຸ່ມນີ້ແມ່ນອີງຕາມ ແລະ ຖອດຖອນມາຈາກຄູ່ມື Creating a cluster with kubeadm ທີ່ສ້າງຂຶ້ນໂດຍທີມງານ Kubernetes.
Fedora 41 ມີທັງ Kubernetes rpms ແບບລະບຸເວີຊັນ ແລະ ບໍ່ລະບຸເວີຊັນ (v1.29). Kubernetes 1.29 ແມ່ນບໍ່ໄດ້ຮັບການສະໜັບສະໜູນຈາກຊຸມຊົນ Kubernetes ອີກຕໍ່ໄປ.
-
ອັບເດດລະບົບດ້ວຍ DNF. ເລີ່ມລະບົບໃໝ່ (Reboot) ຖ້າຈຳເປັນ, ແຕ່ການເລີ່ມລະບົບໃໝ່ສາມາດເລື່ອນໄປເຮັດຫຼັງຈາກຂັ້ນຕອນຕໍ່ໄປກໍໄດ້.
$ sudo dnf update -
ປິດການໃຊ້ງານ swap. ຂະບວນການຕິດຕັ້ງ kubeadm ຈະແຈ້ງເຕືອນຖ້າກວດພົບ swap (ເບິ່ງ ລາຍລະອຽດໄດ້ທີ່ນີ່). ສຳລັບສະພາບແວດລ້ອມການຮຽນຮູ້ ແລະ ການທົດລອງ, ວິທີທີ່ງ່າຍທີ່ສຸດແມ່ນປິດ swap. ແຕ່ທ່ານຍັງສາມາດເປີດ swap ໄວ້ໄດ້ຖ້າຕ້ອງການ ແລະ ຕັ້ງຄ່າ kubeadm ບໍ່ໃຫ້ຢຸດເຮັດວຽກເມື່ອກວດພົບ swap. ລະບົບ Fedora ລຸ້ນໃໝ່ຈະໃຊ້ zram ເປັນຄ່າເລີ່ມຕົ້ນ. ໃຫ້ເລີ່ມລະບົບໃໝ່ຫຼັງຈາກປິດ swap ແລ້ວ.
$ sudo systemctl stop swap-create@zram0 $ sudo dnf remove zram-generator-defaults $ sudo reboot now -
SELinux. ຄູ່ມືການຕິດຕັ້ງ Kubernetes ເທິງ Fedora ສ່ວນໃຫຍ່ແນະນຳໃຫ້ປິດ SELinux. ແຕ່ Kubernetes ກໍສາມາດເຮັດວຽກໄດ້ດີເມື່ອເປີດ SELinux ແລະ ຄອນເທນເນີຫຼາຍຕົວຈະເຮັດວຽກໄດ້ຕາມປົກກະຕິ. ຖ້າພົບຫາບັນຫາ, ການປິດ SELinux ອາດເປັນທາງເລືອກໜຶ່ງທີ່ຄວນລອງ. ເບິ່ງ ຄູ່ມື Quick Doc SELinux ກ່ຽວກັບການປ່ຽນສະຖານະ SELinux ສຳລັບຂໍ້ມູນເພີ່ມເຕີມ.
-
ປິດການໃຊ້ງານ Firewall. Kubeadm ຈະແຈ້ງເຕືອນການຕິດຕັ້ງຖ້າ Firewall ກຳລັງເຮັດວຽກຢູ່. ການປິດ Firewall ຈະຊ່ວຍຫຼຸດຄວາມຊັບຊ້ອນໃນສະພາບແວດລ້ອມການຮຽນຮູ້. ລະບົບ Fedora ລຸ້ນໃໝ່ໃຊ້ firewalld.
$ sudo systemctl disable --now firewalldເບິ່ງພາກສ່ວນກົດ Firewall ໃນບົດຄວາມຂອງ Roman Gherta Kubernetes with CRI-O on Fedora 39 ສຳລັບວິທີການຕັ້ງຄ່າ Firewall ຂອງ Fedora ໃຫ້ເຮັດວຽກຮ່ວມກັບ Kubernetes ຢ່າງຖືກຕ້ອງ,
ລາຍຊື່ Port ແລະ Protocol ທີ່ຄລັສເຕີ Kubernetes ໃຊ້ໃນປະຈຸບັນ ສາມາດເບິ່ງໄດ້ທີ່ https://kubernetes.io/docs/reference/networking/ports-and-protocols/.
-
ຕິດຕັ້ງ
iptablesແລະiproute-tc.ເຊິ່ງ Kubernetes rpms ລຸ້ນໃໝ່ຈະລວມເອົາແພັກເກດເຫຼົ່ານີ້ມາໃຫ້ເປັນຄ່າເລີ່ມຕົ້ນແລ້ວ.$ sudo dnf install iptables iproute-tc -
ຕັ້ງຄ່າ IPv4 forwarding ແລະ bridge filters. ຂໍ້ມູນລຸ່ມນີ້ຄັດລອກມາຈາກ https://kubernetes.io/docs/setup/production-environment/container-runtimes/
$ sudo cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF -
ໂຫຼດໂມດູນ overlay ແລະ bridge filter.
$ sudo modprobe overlay $ sudo modprobe br_netfilter -
ເພີ່ມພາຣາມິເຕີ
sysctlທີ່ຈຳເປັນ ແລະ ຕັ້ງຄ່າໃຫ້ຄົງຢູ່ຖາວອນ.# sysctl params required by setup, params persist across reboots $ sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF -
ນຳໃຊ້ພາຣາມິເຕີ
sysctlໂດຍບໍ່ຕ້ອງເລີ່ມລະບົບໃໝ່.$ sudo sysctl --system -
ກວດສອບວ່າໂມດູນ
br_filterແລະ overlay ຖືກໂຫຼດແລ້ວຫຼືບໍ່.$ lsmod | grep br_netfilter $ lsmod | grep overlay -
ກວດສອບວ່າຕົວປ່ຽນລະບົບ
net.bridge.bridge-nf-call-iptables,net.bridge.bridge-nf-call-ip6tables, ແລະnet.ipv4.ip_forwardຖືກຕັ້ງຄ່າເປັນ1ໃນການຕັ້ງຄ່າ sysctl ຂອງທ່ານໂດຍການໃຊ້ຄຳສັ່ງດັ່ງຕໍ່ໄປນີ້:$ sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward -
ຕິດຕັ້ງ container runtime. ໃນຕົວຢ່າງນີ້ແມ່ນໃຊ້ CRI-O. ທ່ານສາມາດໃຊ້ Containerd ກໍໄດ້. ໝາຍເຫດ: ຖ້າໃຊ້ CRI-O, ໃຫ້ກວດສອບວ່າ ເວີຊັນຫຼັກ:ເວີຊັນຍ່ອຍ (major:minor) ຂອງ CRI-O ແມ່ນກົງກັບເວີຊັນຂອງ Kubernetes (ທີ່ຈະຕິດຕັ້ງລຸ່ມນີ້). CRI-O rpms ຈະມີການລະບຸເວີຊັນຄືກັນກັບ Kubernetes rpms. ໃຫ້ຕິດຕັ້ງເວີຊັນ CRI-O ທີ່ກົງກັບເວີຊັນ Kubernetes ທີ່ທ່ານຕ້ອງການ.
$ sudo dnf install cri-o1.31 containernetworking-plugins -
ກວດສອບເວີຊັນ Kubernetes ທີ່ມີໃຫ້ໃຊ້. ຖ້າບໍ່ແນ່ໃຈວ່າເວີຊັນໃດຂອງ Kubernetes ມີໃຫ້ໃຊ້ໃນ Fedora 41 ຫຼື ລຸ້ນໃໝ່ກວ່າ, ຄຳສັ່ງຕໍ່ໄປນີ້ອາດຈະເປັນປະໂຫຍດ. ໃນຕົວຢ່າງລຸ່ມນີ້, Kubernetes ເວີຊັນ 1.29, 1.30, 1.31, ແລະ 1.32 ແມ່ນມີໃຫ້ໃຊ້ໃນ Fedora 41. ຂໍ້ມູນປະຈຸບັນກ່ຽວກັບເວີຊັນທີ່ຮອງຮັບ ແລະ ວັນໝົດອາຍຸ ສາມາດເບິ່ງໄດ້ທີ່ໜ້າ Release History ທີ່ຈັດທຳໂດຍທີມງານ Kubernetes.
$ sudo dnf list kubernetes1.??ຜົນທີ່ສະແດງອອກມາຈະເປັນແບບນີ້:
> sudo dnf list kubernetes1.?? Updating and loading repositories: Repositories loaded. Available packages kubernetes1.29.x86_64 1.29.11-2.fc41 updates kubernetes1.30.x86_64 1.30.7-1.fc41 updates kubernetes1.31.x86_64 1.31.3-1.fc41 updates kubernetes1.32.x86_64 1.32.0-1.fc41 updates -
ຕິດຕັ້ງ Kubernetes. ໃນຕົວຢ່າງນີ້, ແອັບພລິເຄຊັນ Kubernetes ທັງສາມຕົວ (
kubectl,kubelet, ແລະkubeadm) ແມ່ນຖືກຕິດຕັ້ງໄວ້ໃນເຄື່ອງດຽວກັນ. ກະລຸນາເບິ່ງໝາຍເຫດຂ້າງເທິງກ່ຽວກັບແພັກເກດທີ່ແນະນຳ ສຳລັບ Control plane ຫຼື Worker nodes ຖ້າຫາກຄລັສເຕີຂອງທ່ານມີເຄື່ອງທັງສອງປະເພດ.$ sudo dnf install kubernetes1.31 kubernetes1.31-kubeadm kubernetes1.31-client -
ເລີ່ມລະບົບ ແລະ ເປີດໃຊ້ງານ cri-o.
$ sudo systemctl enable --now crio -
ດຶງ (Pull) ອິມເມຈຄອນເທນເນີທີ່ຈຳເປັນສຳລັບ Kubernetes. ຂັ້ນຕອນນີ້ແມ່ນທາງເລືອກເທົ່ານັ້ນ. ຄຳສັ່ງ
ດ້ານລຸ່ມຈະທຳການດຶງອິມເມຈໃຫ້ເອງຖ້າຈຳເປັນ.kubeadm init$ sudo kubeadm config images pull -
ເລີ່ມລະບົບ ແລະ ເປີດໃຊ້ງານ
kubelet. ຕົວkubeletຈະຕິດຢູ່ໃນສະຖານະ crash loop ຈົນກວ່າຄລັສເຕີຈະຖືກຕັ້ງຄ່າເລີ່ມຕົ້ນ (initialized) ໃນຂັ້ນຕອນຕໍ່ໄປ.$ sudo systemctl enable --now kubelet -
ຕັ້ງຄ່າເລີ່ມຕົ້ນໃຫ້ກັບຄລັສເຕີ.
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 -
kubeadm ຈະສະແດງຂໍ້ມູນຂັ້ນຕອນການຕັ້ງຄ່າເລີ່ມຕົ້ນເທິງໜ້າຈໍ Terminal. ຖ້າສຳເລັດ, ຈະມີຂໍ້ຄວາມສະແດງອອກມາຄືລຸ່ມນີ້. ໃນຈຸດນີ້, ຄລັສເຕີແມ່ນເລີ່ມເຮັດວຽກແລ້ວເທິງເຄື່ອງນີ້. ຫຼັງຈາກ kubeadm ເຮັດວຽກສຳເລັດແລ້ວ ທ່ານຄວນຈະເຫັນຂໍ້ຄວາມ:
Your Kubernetes control-plane has initialized successfully! ເພື່ອເລີ່ມຕົ້ນນຳໃຊ້ຄລັສເຕີຂອງທ່ານ, ທ່ານຈຳເປັນຕ້ອງໄດ້ລັນຄຳສັ່ງຕໍ່ໄປນີ້ໃນຖານະຜູ້ໃຊ້ທົ່ວໄປ: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ຫຼື ຖ້າຫາກທ່ານເປັນຜູ້ໃຊ້ root, ທ່ານສາມາດໃຊ້ຄຳສັ່ງ: export KUBECONFIG=/etc/kubernetes/admin.conf -
ຂັ້ນຕອນຂ້າງເທິງຈະຊ່ວຍໃຫ້ຜູ້ໃຊ້ທີ່ບໍ່ແມ່ນ root ສາມາດໃຊ້ງານ
kubectlເຊິ່ງເປັນເຄື່ອງມື command line ຂອງ Kubernetes ໄດ້. ໃຫ້ເລີ່ມໃຊ້ຄຳສັ່ງເຫຼົ່ານີ້ເລີຍ.$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config -
ອະນຸຍາດໃຫ້ເຄື່ອງ control plane ສາມາດແລ່ນ pods ສຳລັບແອັບພລິເຄຊັນຕ່າງໆໄດ້. ຖ້າບໍ່ດັ່ງນັ້ນ, ທ່ານຈະຕ້ອງມີເຄື່ອງຫຼາຍກວ່າໜຶ່ງເຄື່ອງໃນຄລັສເຕີ.
$ kubectl taint nodes --all node-role.kubernetes.io/control-plane- -
ຕິດຕັ້ງ flannel ລົງໃນຄລັສເຕີເພື່ອໃຊ້ເປັນລະບົບເຄືອຂ່າຍພາຍໃນ. ຍັງມີລະບົບເຄືອຂ່າຍອື່ນໆອີກຫຼາຍຢ່າງນອກຈາກ flannel, ແຕ່ flannel ແມ່ນໃຊ້ງານງ່າຍ ແລະ ເໝາະສົມສຳລັບຄູ່ມືນີ້.
$ kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml -
ສະແດງລາຍຊື່ຂອງ pods ທີ່ກຳລັງເຮັດວຽກຢູ່ໃນຄລັສເຕີ. ທຸກໆ pod ຄວນມີສະຖານະເປັນ Running. ແຕ່ອາດຈະມີສະຖານະ CrashLoopBackOff ສະແດງຂຶ້ນມາສຳລັບ coredns pod. ບັນຫານີ້ມັກເກີດຂຶ້ນເມື່ອຕິດຕັ້ງ Kubernetes ເທິງ Virtual Machine (VM) ແລະ ບໍລິການ DNS ໃນຄລັສເຕີອາດຈະເລືອກເຄືອຂ່າຍທີ່ບໍ່ຖືກຕ້ອງ. ທ່ານສາມາດຄົ້ນຫາວິທີແກ້ໄຂໄດ້ຈາກອິນເຕີເນັດ ຫຼື ເບິ່ງພາກສ່ວນການແກ້ໄຂບັນຫາດ້ານລຸ່ມສຳລັບສອງວິທີທີ່ເປັນໄປໄດ້.
$ kubectl get pods --all-namespaces
ໃນຕອນນີ້, ທ່ານມີເຄື່ອງຄອມພິວເຕີເຄື່ອງດຽວໃນຄລັສເຕີ ທີ່ເຮັດວຽກເປັນທັງ control plane ແລະ ສາມາດຮອງຮັບວຽກໃນຖານະ node ໄດ້.
ການອັບເກຣດຄລັສເຕີ Kubernetes ຕ້ອງມີການລະມັດລະວັງ ແລະ ການວາງແຜນ. ເບິ່ງຂໍ້ມູນເພີ່ມເຕີມໄດ້ທີ່ Upgrading kubeadm clusters.
ປລັກອິນ DNF Versionlock ແມ່ນມີປະໂຫຍດໃນການປ້ອງກັນການອັບເດດ Kubernetes rpms ໂດຍບໍ່ໄດ້ວາງແຜນ. ບາງຄັ້ງ, ເວີຊັນຂອງ Kubernetes ໃນ Fedora ອາດຈະໝົດອາຍຸການຮອງຮັບ ແລະ ເວີຊັນໃໝ່ຖືກເພີ່ມເຂົ້າໃນບ່ອນເກັບໄຟລ໌ (repository). ຫຼື ການອັບເກຣດ Fedora ເທິງເຄື່ອງຄລັສເຕີກໍອາດສົ່ງຜົນໃຫ້ເວີຊັນ Kubernetes ປ່ຽນແປງ. ເມື່ອຕິດຕັ້ງ DNF Versionlock ແລ້ວ, ຄຳສັ່ງຕໍ່ໄປນີ້ຈະລັອກ kubernetes rpms ແລະ cri-o rpm ໄວ້ທີ່ເວີຊັນ 1.31 ແຕ່ຍັງອະນຸຍາດໃຫ້ມີການອັບເດດ patch ຍ່ອຍໄດ້ຢູ່:
$ sudo dnf versionlock add kubernetes*-1.31.* cri-o-1.31.*
ການແກ້ໄຂບັນຫາ CrashLoopBackOff
ທີມງານ CoreDNS ໄດ້ຈັດເຮັດຄູ່ມື ການແກ້ໄຂບັນຫາ loop ໃນຄລັສເຕີ Kubernetes ພ້ອມກັບທາງເລືອກຕ່າງໆ ເພື່ອຊ່ວຍແກ້ໄຂບັນຫານີ້.
ວິທີແກ້ໄຂແບບ "ຊົ່ວຄາວ" ຕາມທີ່ທີມງານ CoreDNS ແນະນຳ ແມ່ນການແກ້ໄຂ ConfigMap ຂອງ CoreDNS ໂດຍໃຊ້ kubectl. ໃນ ConfigMap ໃຫ້ປ່ຽນ forward . /etc/resolv.conf ດ້ວຍໝາຍເລກ IP ຂອງ DNS server ໃນເຄືອຂ່າຍຂອງທ່ານ. ຕົວຢ່າງ ຖ້າ DNS server ມີ IP ແມ່ນ 192.168.110.201, ໃຫ້ປ່ຽນເປັນ forward . 192.168.110.201. ໃຊ້ຄຳສັ່ງນີ້ເພື່ອແກ້ໄຂ CoreDNS ConfigMap:
$ kubectl edit configmap coredns -n kube-system
kubectl ຈະເປີດໂປຣແກຣມແກ້ໄຂຂໍ້ຄວາມ (editor) ຂອງ Fedora ຂຶ້ນມາ. ເຊິ່ງຄ່າເລີ່ມຕົ້ນຂອງ Fedora ແມ່ນ nano ແຕ່ທ່ານສາມາດປ່ຽນເປັນຕົວອື່ນໄດ້ຕາມຕ້ອງການ.
ອີກທາງເລືອກໜຶ່ງແມ່ນການປິດການເຮັດວຽກຂອງ systemd-resolved stub resolving ເທິງເຄື່ອງທີ່ແລ່ນຄລັສເຕີ ໂດຍໃຊ້ໂຄ້ດລຸ່ມນີ້. ຂໍຂອບໃຈ @jasonbrooks (https://pagure.io/user/jasonbrooks) ສຳລັບການກວດສອບ ແລະ ຄຳແນະນຳ.
$ sudo mkdir -p /etc/systemd/resolved.conf.d/
$ sudo cat <<EOF | sudo tee /etc/systemd/resolved.conf.d/stub-listener.conf
[Resolve]
DNSStubListener=no
EOF
Want to help? Learn how to contribute to Fedora Docs ›