Rabu, 13 November 2024

K8S-vmware photon OS

 

Photon OS dan Kluster Kubernetes

Lubomir Tobek

Waktu baca 6 menit

Ilustrasi dasar ini akan memperagakan cara menerapkan Kubernetes Cluster menggunakan Photon OS.

“Photon OS adalah sistem operasi berbasis Linux, open source, dengan keamanan yang tangguh, dan berkelas enterprise yang dibuat khusus untuk aplikasi Cloud dan Edge.” Sumber gambar: vmware.github.io

Saya akan menyiapkan dua mesin virtual, bahkan mungkin lebih. Dalam kasus saya, ini adalah dua VM (photon-5.0-dde71ec57.x86_64.iso) dengan VMware Fusion (v13.5).

k8-master-node — 192.168.1.126 (2 CPU, RAM 2 GB, HDD 8 GB, vmxnet3)
k8-worker-node — 192.168.1.109 (2 CPU, RAM 2 GB, HDD 8 GB, vmxnet3)

Photon master bertanggung jawab untuk menjalankan layanan kube-apiserver, kube-controller-manager, dan kube-scheduler, sedangkan Photon worker bertanggung jawab untuk menjalankan layanan kubelet, proxy, dan docker.

  • Sistem operasi diinstal dalam versi “Pengembang”, antarmuka jaringan VM dijembatani.
  • Alamat IP ditetapkan statis, dan jaringan IP untuk tutorial sederhana ini dari cakupan jaringan rumah.
  • Saya mengeksekusi semua perintah di bawah akun root.
  • Saya menjalankan perintah pada kedua node, dan perintah tersebut hanya berjalan pada salah satunya; hal itu dapat dilihat dari perintahnya.

Langkah-langkah persiapan node OS Photon

Bahasa Indonesia : #Edit konfigurasi daemon ssh 
vi /etc/ssh/sshd_config

#Cari "PermitRootLogin no" dan ubah ke PermitRootLogin
yes

#Restart daemon sshd
systemctl restart sshd

#Edit file host, tambahkan IP dan nama host kedua server
vi /etc/hosts

#Untuk localhost saya akan memberikan
#127.0.0.1

#Periksa/edit IP statis pada mesin Photon
cat /etc/systemd/network/50-static-en.network

#Instal docker dan semua paket yang diperlukan pada kedua server
tdnf install -y vim docker kubernetes-kubeadm apparmor-parser

#Instal iptables
tdnf install iptables -y

#Buka port yang diperlukan pada node master
iptables -A INPUT -p tcp -m tcp --dport 179 -j ACCEPT
iptables -A INPUT -p Bahasa Indonesia: tcp -m tcp --dport 2379:2380 -j TERIMA
iptables -A INPUT -p tcp -m tcp --dport 4789 -j TERIMA iptables -A INPUT
-p tcp -m tcp --dport 6443 -j TERIMA
iptables -A INPUT -p tcp -m tcp --dport 10250:10252 -j TERIMA
iptables -A INPUT -p icmp --icmp-type echo-request -j TERIMA

#Simpan aturan ke ip4save
iptables-save > /etc/systemd/scripts/ip4save
systemctl restart iptables
systemctl daemon-reload

#Buka port yang diperlukan pada node pekerja
iptables -A INPUT -p tcp -m tcp Bahasa Indonesia: --dport 179 -j TERIMA
iptables -A INPUT -p tcp -m tcp --dport 4789 -j TERIMA iptables -A INPUT -p
tcp -m tcp --dport 10250:10252 -j TERIMA
iptables -A INPUT -p tcp -m tcp --dport 30000:32767 -j TERIMA
iptables -A INPUT -p icmp --icmp-type echo-request -j TERIMA

#Simpan aturan ke ip4save
iptables-save > /etc/systemd/scripts/ip4save
systemctl restart iptables
systemctl daemon-reload

Penerusan IPv4 pada Photon OS

#Iptables memfilter penerusan IPv4 
vi /etc/sysctl.d/kubernetes.conf

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net/bridge/bridge-nf-call-arptables = 1

#Muat modul
modprobe br_netfilter

#Terapkan perubahan
sysctl --system

Container Runtime pada Photon OS

#Instal crictl sebagai titik akhir runtime kontainer 
tdnf install -y cri-tools

#Buat konfigurasi untuk crictl
vi /etc/crictl.yaml

runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: false
enable-pull-on-run: false

#Ubah config.toml
vi /etc/containerd/config.toml

#Di konfigurasi, tambahkan baris plugins di bawah enable_selinux = true

[plugins."io.containerd.grpc.v1.cri".containerd]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true

#Mulai ulang layanan
systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd.service

#Periksa status layanan
systemctl status containerd

#Periksa apakah containerd sedang berjalan
crictl info | grep -i cgroup | grep true

Konfigurasikan Kubernetes pada Master Node

#Aktifkan kubelet 
root@k8-master-node [ ~ ]# systemctl enable --now kubelet

#Tarik semua gambar yang diperlukan
root@k8-master-node [ ~ ]# kubeadm config images pull

#Inisialisasi kluster
root@k8-master-node [ ~ ]# kubeadm init --pod-network-cidr=192.168.0.0/16
Log: 

Bidang kendali Kubernetes Anda telah berhasil diinisialisasi!

Untuk mulai menggunakan klaster Anda, Anda perlu menjalankan perintah berikut sebagai
pengguna biasa:

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

Atau, jika Anda adalah pengguna root, Anda dapat menjalankan:

export KUBECONFIG=/etc/kubernetes/admin.conf

Anda sekarang harus menyebarkan jaringan pod ke klaster.
Jalankan "kubectl apply -f [podnetwork].yaml" dengan salah satu opsi yang tercantum di:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Kemudian Anda dapat menggabungkan sejumlah node pekerja dengan menjalankan yang berikut ini pada
setiap node sebagai root:

kubeadm join 192.168.1.126:6443 --token v7lb7n.pb7cc0bjl06vqb32 \
--discovery-token-ca-cert-hash
sha256:a150bc813d3cc723fe0e80118b48982558282de26b0b4165474237f69ccbd998
Bahasa Indonesia: #Ekspor konfigurasi Kubernetes 

root@k8-master-node [ ~ ]# mkdir -p $HOME/.kube
root@k8-master-node [ ~ ]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
root@k8-master-node [ ~ ]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

#Hapus noda dari simpul kontrol
kubectl taint nodes --all node-role.kubernetes.io/control-plane-

#Instal plugin jaringan pada simpul master
root@k8-master-node [ ~ ]# curl https://raw.githubusercontent.com/projectcalico/calico/master/manifests/calico.yaml -o network.yaml

#Mulai ulang docker dan tarik manifes
root@k8-master-node [ ~ ]# systemctl restart docker

#Tarik manifes Bahasa Indonesia: image CNI yang dibutuhkan untuk pod kebijakan jaringan
root@k8-master-node [ ~ ]# docker pull calico/cni:v3.25.0
root@k8-master-node [ ~ ]# docker pull calico/node:v3.25.0
root@k8-master-node [ ~ ]# docker pull calico/kube-controllers:v3.25.0

#Terapkan konfigurasi
root@k8-master-node [ ~ ]# kubectl apply -f network.yaml

#Periksa apakah statusnya "Ready"
root@k8-master-node [ ~ ]# kubectl get nodes

#Tunggu beberapa saat hingga pod mulai, periksa
root@k8-master-node [ ~ ]# kubectl get pods --all-namespaces

Bahasa Indonesia : root@k8-master-node [ ~ ]# kubectl get nodes
NAMA STATUS PERAN USIA VERSI
k8-master-node Siap control-plane 24m v1.27.3

root@k8-master-node [ ~ ]# kubectl get pods --all-namespaces
NAMASPACE SIAP STATUS MULAI ULANG USIA
kube-system calico-kube-controllers-8787c9999-j6n6c 1/1 Berjalan 0 100dtk
kube-system calico-node-rf8kz 0/1 Berjalan 0 100dtk
kube-system coredns-5d78c9869d-kl7ng 1/1 Berjalan 0 10m
kube-system coredns-5d78c9869d-qz8l2 1/1 Berjalan 0 10m
kube-system etcd-k8-master-node 1/1 Berjalan 0 10m
kube-system kube-apiserver-k8-master-node 1/1 Berjalan 0 10m
kube-system kube-controller-manager-k8-master-node 1/1 Berjalan 0 10m
kube-system kube-proxy-wb7j5 1/1 Berjalan 0 10m
kube-system kube-scheduler-k8-master-node 1/1 Berjalan 0 10m

Tambahkan Node Pekerja ke Cluster

Bahasa Indonesia: #Tarik image yang dibutuhkan 
root@k8-worker-node [ ~ ]# kubeadm config images pull

#Gabungkan worker node ke cluster
root@k8-worker-node [ ~ ]# kubeadm join 192.168.1.126:6443 --token v7lb7n.pb7cc0bjl06vqb32 \
--discovery-token-ca-cert-hash sha256:a150bc813d3cc723fe0e80118b48982558282de26b0b4165474237f69ccbd998

#Mulai ulang docker
root@k8-worker-node [ ~ ]# systemctl restart docker

#Tarik image CNI yang dibutuhkan
root@k8-worker-node [ ~ ]# docker pull calico/cni:v3.25.0
root@k8-worker-node [ ~ ]# tarik docker calico/node:v3.25.0
root@k8-worker-node [ ~ ]# tarik docker calico/kube-controllers:v3.25.0

Memeriksa Cluster Kubernetes

Bahasa Indonesia: root@k8-master-node [ ~ ]# kubectl get nodes 
NAMA STATUS PERAN USIA VERSI
k8-master-node Siap control-plane 31m v1.27.3
k8-worker-node Siap <none> 4m25d v1.27.3

#Tambahkan sampel ke manifes
root@k8-master-node [ ~ ]# vi hello.yaml

apiVersion: v1
kind: Pod
metadata:
name: hello
spec:
restartPolicy: Never
containers:
- name: hello
image: projects.registry.vmware.com/photon/photon4:latest
command: ["/bin/bash"]
args: ["-c", "echo Hello Kubernetes"]

#Terapkan manifes
root@k8-master-node [ ~ ]# kubectl apply -f hello.yaml

#Periksa apakah pod sedang berjalan
root@k8-master-node [ ~ ]# kubectl get pods
NAMA SIAP STATUS MULAI ULANG
USIA halo 0/1 Selesai 0 13d

#Periksa log
root@k8-master-node [ ~ ]# kubectl logs halo | grep "Halo Kubernetes"
Halo Kubernetes

Kami melihat cara menerapkan Kubernetes Cluster menggunakan Photon OS. Photon OS mencakup alat dan pustaka inti yang dibutuhkan untuk menjalankan pekerjaan Kubernetes, seperti runtime Docker dan Kubernetes CLI, dan merupakan platform ideal untuk menjalankan Kubernetes

Tidak ada komentar:

Posting Komentar