Cara Install Cluster Kubernetes di CentOS 7


Disumbangkan oleh Google kepada komunitas Opensource, Kubernetes kini telah menjadi alat pengelolaan container pilihan. Ia dapat mengelola dan mengatur tidak hanya waktu proses buruh pelabuhan tetapi juga waktu proses Kontainer dan Rkt.

Sebuah cluster Kubernetes pada umumnya memiliki sebuah node master dan beberapa node pekerja atau Minion. Node pekerja kemudian dikelola dari node utama, sehingga memastikan bahwa cluster dikelola dari titik pusat.

Penting juga untuk disebutkan bahwa Anda juga dapat menerapkan cluster Kubernetes dengan node tunggal yang umumnya direkomendasikan untuk beban kerja non-produksi yang sangat ringan. Untuk melakukan hal ini, Anda dapat menggunakan Minikube, yang merupakan alat yang menjalankan cluster Kubernetes dengan node tunggal di mesin virtual pada node Anda.

Bacaan yang Direkomendasikan: Cara Memasang Cluster Kubernetes di CentOS 8

Untuk tutorial ini, kami akan memandu instalasi cluster Kubernetes multi-node di CentOS 7 Linux. Tutorial ini berbasis baris perintah sehingga Anda memerlukan akses ke jendela terminal Anda.

Prasyarat

  1. Beberapa server menjalankan Centos 7 (1 Master Node, 2 Worker Node). Direkomendasikan agar Node Master Anda memiliki minimal 2 CPU, meskipun ini bukan persyaratan ketat.
  2. Konektivitas internet di semua node Anda. Kita akan mengambil paket Kubernetes dan buruh pelabuhan dari repositori. Demikian pula, Anda perlu memastikan bahwa pengelola paket yum terinstal secara default dan dapat mengambil paket dari jarak jauh.
  3. Anda juga memerlukan akses ke akun dengan hak sudo atau root. Dalam tutorial ini, saya akan menggunakan akun root saya.

Cluster 3-node kita akan terlihat seperti ini:

Instalasi Cluster Kubernetes pada Master-Node

Agar Kubernetes dapat berfungsi, Anda memerlukan mesin containerisasi. Untuk instalasi ini, kami akan menggunakan buruh pelabuhan karena ini adalah yang paling populer.

Langkah-langkah berikut akan dijalankan di Node-Master.

Langkah 1: Siapkan Nama Host, Firewall dan SELinux

Pada node master Anda, tetapkan nama host dan jika Anda tidak memiliki server DNS, perbarui juga file /etc/hosts Anda.

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

Anda dapat melakukan ping ke worker-node-1 dan worker-node-2 untuk menguji apakah file host Anda yang diperbarui baik-baik saja menggunakan perintah ping.

ping 10.128.0.29
ping 10.128.0.30

Selanjutnya, nonaktifkan SElinux dan perbarui aturan firewall Anda.

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

Tetapkan aturan firewall berikut pada port. Pastikan setiap perintah firewall-cmd berhasil.

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

Langkah 2: Siapkan Repo Kubernetes

Anda perlu menambahkan repositori Kubernetes secara manual karena repositori tersebut tidak diinstal secara default di 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

Langkah 3: Instal Kubeadm dan Docker

Dengan repo paket yang sudah siap, Anda dapat melanjutkan dan menginstal paket kubeadm dan docker.

yum install kubeadm docker -y 

Ketika instalasi berhasil diselesaikan, aktifkan dan mulai kedua layanan.

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

Langkah 4: Inisialisasi Kubernetes Master dan Siapkan Pengguna Default

Sekarang kita siap untuk menginisialisasi master kubernetes, tetapi sebelum itu Anda perlu menonaktifkan swap untuk menjalankan perintah “kubeadm init”.

swapoff -a

Inisialisasi master Kubernetes adalah proses yang sepenuhnya otomatis yang dikelola oleh perintah “kubeadm init” yang akan Anda jalankan.

kubeadm init

Anda mungkin ingin menyalin baris terakhir dan menyimpannya di suatu tempat karena Anda harus menjalankannya di simpul pekerja.

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

Kiat: Kadang-kadang perintah ini mungkin mengeluh tentang argumen (args) yang diteruskan, jadi editlah untuk menghindari kesalahan apa pun. kesalahan. Jadi, Anda akan menghapus karakter '\' yang menyertai --token dan perintah terakhir Anda akan terlihat seperti ini.

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

Setelah berhasil menginisialisasi Kubernetes, Anda harus mengizinkan pengguna Anda untuk mulai menggunakan cluster. Dalam kasus kami, kami ingin menjalankan instalasi ini sebagai pengguna root, oleh karena itu kami akan melanjutkan dan menjalankan perintah ini sebagai root. Anda dapat mengubah ke pengguna berkemampuan sudo yang Anda sukai dan menjalankan perintah di bawah ini menggunakan sudo.

Untuk menggunakan root, jalankan:

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

Untuk menggunakan pengguna berkemampuan sudo, jalankan:

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

Sekarang periksa apakah perintah kubectl diaktifkan.

kubectl get nodes

Pada titik ini, Anda juga akan melihat bahwa status simpul-master adalah 'Belum Siap'. Hal ini karena kami belum men-deploy jaringan pod ke cluster.

Jaringan pod adalah jaringan overlay untuk cluster, yang diterapkan di atas jaringan node saat ini. Ini dirancang untuk memungkinkan konektivitas di seluruh pod.

Langkah 5: Siapkan Jaringan Pod Anda

Menyebarkan cluster jaringan adalah proses yang sangat fleksibel tergantung pada kebutuhan Anda dan ada banyak pilihan yang tersedia. Karena kami ingin instalasi kami sesederhana mungkin, kami akan menggunakan plugin Weavenet yang tidak memerlukan konfigurasi atau kode tambahan apa pun dan menyediakan satu alamat IP per pod yang sangat bagus untuk kami. Jika Anda ingin melihat opsi lainnya, silakan periksa di sini.

Perintah-perintah ini penting untuk menyiapkan jaringan pod.

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

Sekarang jika Anda memeriksa status simpul-master Anda, seharusnya statusnya adalah 'Siap'.

kubectl get nodes

Selanjutnya, kita menambahkan node pekerja ke cluster.

Menyiapkan Node Pekerja untuk Bergabung dengan Cluster Kubernetes

Langkah-langkah berikut akan dijalankan pada node pekerja. Langkah-langkah ini harus dijalankan di setiap node pekerja saat bergabung dengan cluster Kubernetes.

Langkah 1: Siapkan Nama Host, Firewall dan SELinux

Pada worker-node-1 dan worker-node-2 Anda, tetapkan nama host dan jika Anda tidak memiliki server DNS, perbarui juga master dan pekerja Anda node pada file /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

Anda dapat melakukan ping ke master-node untuk menguji apakah file host Anda yang diperbarui baik-baik saja.

Selanjutnya, nonaktifkan SElinux dan perbarui aturan firewall Anda.

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

Tetapkan aturan firewall berikut pada port. Pastikan semua perintah firewall-cmd, kembali sukses.

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

Langkah 2: Siapkan Repo Kubernetes

Anda perlu menambahkan repositori Kubernetes secara manual karena repositori tersebut tidak diinstal sebelumnya di 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

Langkah 3: Instal Kubeadm dan Docker

Dengan repo paket yang sudah siap, Anda dapat melanjutkan dan menginstal paket kubeadm dan docker.

yum install kubeadm docker -y 

Mulai dan aktifkan kedua layanan.

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

Langkah 4: Bergabunglah dengan Node Pekerja ke Cluster Kubernetes

Kami sekarang memerlukan token yang dihasilkan oleh kubeadm init, untuk bergabung dengan cluster. Anda dapat menyalin dan menempelkannya ke node-1 dan node-2 jika Anda telah menyalinnya di suatu tempat.

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

Seperti yang disarankan pada baris terakhir, kembali ke master-node Anda dan periksa apakah worker node-1 dan worker node-2 telah bergabung dengan cluster menggunakan perintah berikut.

kubectl get nodes

Jika semua langkah berhasil dijalankan, Anda akan melihat node-1 dan node-2 dalam status siap di master-node.

Bacaan yang Direkomendasikan: Cara Men-deploy Nginx di Cluster Kubernetes

Pada titik ini, kami telah berhasil menyelesaikan instalasi cluster Kubernetes di Centos 7 dan kami telah berhasil melakukan on-board pada dua node pekerja. Anda sekarang dapat mulai membuat pod dan menerapkan layanan Anda.