DevOps AI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
No Result
View All Result
Home DevOps & Cloud

Highly Available K8S On-premise – Multiple Master Nodes

Hiếu Tạ by Hiếu Tạ
1 Tháng 5, 2025
in DevOps & Cloud, Tin tức
0
Highly Available K8S On-premise – Multiple Master Nodes
Share on FacebookShare on Twitter

Kubernetes là một nền tảng nguồn mở, có thể mở rộng để quản lý các ứng dụng được đóng gói và các service, giúp thuận lợi trong việc cấu hình và tự động hoá việc triển khai ứng dụng. Kubernetes là một hệ sinh thái lớn và phát triển nhanh chóng. Các dịch vụ, sự hỗ trợ và công cụ có sẵn rộng rãi. Có nhiều các để dựng một cluster K8S trên on-premise, trong bài này mình dùng thông qua kubeadm

Tổng quan

Cụm cluster sẽ gồm 2 master, 6 worker node, 1 HA Proxy theo IP như sau

OS: Rocky Linux 8
PersistenVolume: /u01
Pod Network: Calico 3.20
K8S version: v1.27.0

Chuẩn bị

Bài này không phải detail về Docker nên vì vậy cần chuẩn bị cài trước ở các server, bạn có thể tham khảo đoạn mẫu sau

Related Post

Demo Tích Hợp Vault trong Kubernetes

Demo Tích Hợp Vault trong Kubernetes

30 Tháng 4, 2025
Áp dụng alias để rút gọn lệnh hay dùng trên console

Áp dụng alias để rút gọn lệnh hay dùng trên console

1 Tháng 5, 2025

Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

1 Tháng 5, 2025

Series AWS EKS – Bài 4 – EKS Self Managed Node và EKS Managed Node Group

1 Tháng 5, 2025
# Install Docker CE
## Set up the repository
### Install required packages.
yum install -y yum-utils device-mapper-persistent-data lvm2### Add Docker repository.

yum-config-manager --add-repo 
https://download.docker.com/linux/centos/docker-ce.repo## Install Docker CE.

yum update -y && yum install -y 
  containerd.io-1.2.10 
  docker-ce-19.03.4 
  docker-ce-cli-19.03.4## Create /etc/docker directory.

mkdir /etc/docker# Setup daemon.

cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

mkdir -p /etc/systemd/system/docker.service.d# Restart Docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker.service

Cài đặt

Step 1: Setup file hosts ở tất cả các node

vi /etc/hosts
10.121.30.40 pe-smsfw-worker1
10.121.30.41 pe-smsfw-worker2
10.121.30.42 pe-smsfw-worker3
10.121.30.43 pe-smsfw-worker4
10.121.30.44 pe-smsfw-worker5
10.121.30.45 pe-smsfw-worker6

10.121.30.46 pe-smsfw-master1
10.121.30.47 pe-smsfw-master2

10.121.30.48 pe-smsfw-loadbalance

Step 2: Tắt swap (ở tất cả các node), ta có thể dùng swapoff -a để tắt tạm thời, nhưng dưới đây là cách tắt vĩnh viễn cho dù reboot server cũng không bật lên lại

vi /etc/fstab

comment out # với dòng swap và save

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Step 3: Tắt selinux

setenforce 0
vi /etc/selinux/config

Chỉnh SELINUX=disabled

Step 4: Setup HAProxy (ở server 10.121.30.48)

yum install haproxy -y
systemctl start haproxy
systemctl enable haproxy
vi /etc/haproxy/haproxy.cfg
systemctl restart haproxy

Step 5: Setup K8S repository (ở tất cả các node trừ node HAProxy)

vi /etc/yum.repos.d/kubernetes.repo

Copy nội dung sau:

[miry_kubernetes]
name=miry_kubernetes
baseurl=https://packagecloud.io/miry/kubernetes/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/miry/kubernetes/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[miry_kubernetes-source]
name=miry_kubernetes-source
baseurl=https://packagecloud.io/miry/kubernetes/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/miry/kubernetes/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

Cài đặt kubelet, klubeadm, kubectl

yum install -y kubelet kubeadm kubectl ### Cài đặt packet lastest

hoặc
yum install -y kubelet-1.24.0-0 kubeadm-1.24.0-0 kubectl-1.24.0-0 ### Cài đặt packet theo version

systemctl enable kubelet ### Bật ứng dụng khi restart host
systemctl start kubelet ### Start ứng dụng

Lúc này kubelet sẽ chưa running thành công mà báo thiếu config, vì vậy cần kubeadm init

Step 6: Init cluster (trên 1 node master ở đây mình dùng trên 10.121.30.46)

kubeadm init --control-plane-endpoint "10.121.30.48:6443" --upload-certs --apiserver-advertise-address 10.121.30.46 --pod-network-cidr=10.244.0.0/16

Kết quả câu lệnh sau 1 dùng cho các master node còn lại để join vào làm master, lệnh còn lại giành cho các worker

kubeadm join 10.121.30.48:6443 --token bp7zex.h23tt1h6tazmh7cz
--discovery-token-ca-cert-hash sha256:5831300e3a4694f54ac08508fddaa32692070d33619c995a2710098fce184a83
--control-plane --certificate-key cbf68a9d851a43b1123ff9e126633c50d045f2d5a9115dd9dfda34caeaf0825d
kubeadm join 10.121.30.48:6443 --token bp7zex.h23tt1h6tazmh7cz
--discovery-token-ca-cert-hash sha256:5831300e3a4694f54ac08508fddaa32692070d33619c995a2710098fce184a83
systemctl restart kubelet

Step 7: Sau khi cài đặt packet thành công ta tiến hành khai báo các biến môi trường để sử dụng
K8S

Cách 1: Sử dụng tài khoản root (Với cách này ta thường xuyên phải làm lặp đi lặp lại.
export KUBECONFIG=/etc/kubernetes/admin.conf

Cách 2: Cách này sẽ khai báo cố định, lần sau không cần khai báo nữa
 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -g):$(id -g) $HOME/.kube/config

Đối với các worker node thì chỗ admin.conf thành kubelet.conf

Step 8: Config Pod Network

kubectl create -f https://docs.projectcalico.org/v3.20/manifests/calico.yaml

Step 9: Kiểm tra lại các node

kubectl get node -owide -A

Note

Ở Step 6 Thêm 1 node master mới sau 1 khoảng thời gian token hết hạn

SSH vào node master hiện tạikubeadm init phase upload-certs --upload-certs
copy output CERT

kubeadm token create --print-join-command

copy output TOKEN

kubeadm join 10.121.30.48:6443 –token TOKEN –discovery-token-ca-cert-hash sha256:5831300e3a4694f54ac08508fddaa32692070d33619c995a2710098fce184a83 –control-plane –certificate-key CERT

Chúc các bạn thành công!!!

Tags: HAk8skuberneteson-premise
Hiếu Tạ

Hiếu Tạ

Graduated as a Software Engineer. I have more than 3-year experience in developing software and DevOps, used to many services of AWS, and Azure, K8S, and using Windows or Linux on-premies proficiently to set up servers, proxy, build and deploy multiple programming languages (Java, GO, NET,...)..... Experience with CMS such SiteCore, ElasticPath, AEM... Implement CICD via Jenkins scripting, infrastructure as code via Terraform, and AWS Cloud Formation.

Related Posts

Demo Tích Hợp Vault trong Kubernetes
DevOps & Cloud

Demo Tích Hợp Vault trong Kubernetes

by Hiếu Tạ
30 Tháng 4, 2025
Áp dụng alias để rút gọn lệnh hay dùng trên console
DevOps & Cloud

Áp dụng alias để rút gọn lệnh hay dùng trên console

by devopsify
1 Tháng 5, 2025
Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04
DevOps & Cloud

Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

by devopsify
1 Tháng 5, 2025
Next Post
Cài đặt và dựng ứng dụng React Native đầu tiên với Expo Go

Cài đặt và dựng ứng dụng React Native đầu tiên với Expo Go

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recommended

Cài đặt Maven trên Windows

25 Tháng 4, 2025

Các website demo hay được sử dụng cho thực hành Automation Test

1 Tháng 5, 2025
Cài đặt Jenkins bằng Docker

Cài đặt Jenkins bằng Docker

30 Tháng 4, 2025

Kiểm tra tài nguyên CPU, RAM trên Ubuntu 22.04

25 Tháng 4, 2025
Unit Test là gì?

Unit Test là gì?

29 Tháng 4, 2025
cdk terraform

CDK cho Terraform

29 Tháng 4, 2025
Hướng Dẫn Thiết Lập LDAPS Trên Windows Server 2022

Hướng Dẫn Thiết Lập LDAPS Trên Windows Server 2022

26 Tháng 4, 2025
DeepSeek AI là gì? Tổng hợp các mô hình DeepSeek mạnh mẽ nhất hiện nay

DeepSeek AI là gì? Tổng hợp các mô hình DeepSeek mạnh mẽ nhất hiện nay

1 Tháng 5, 2025
DevOpsify

Cộng đồng DevOps Việt Nam chia sẽ kiến thức giúp tăng tốc quá trình phát triển ứng dụng và tự động hóa trong lĩnh vực Cloud DevOps & AI.

Bài viết mới

  • Unit Test là gì?
  • CDK cho Terraform
  • Hướng Dẫn Thiết Lập LDAPS Trên Windows Server 2022

Categories

  • AI & Automation
  • Bảo mật
  • Chưa phân loại
  • DevOps & Cloud
  • Tin tức
No Result
View All Result
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud

© 2025 DevOpsify