Macld DevOps,Kubernetes,Linux,Security Cài đặt & cấu hình cụm K8S

Cài đặt & cấu hình cụm K8S

Cài đặt và cấu hình Kubernetes

1. Chuẩn bị

2. Cài đặt k8s

2.1. Cài đặt k8s bằng kubeadm

2.2. Khởi tạo cụm

3. Các công cụ quản lý k8s

3.1. Cài đặt rancher

3.2. Thêm cụm k8s vào rancher

  1. Chuẩn bị
  • K8s-master-1: 192.168.1.201
  • K8s-worker-1: 192.168.1.202
  • K8s-worker-2: 192.168.1.203
  • Rancher-server: 192.168.1.204
  • Database-server: 192.168.1.205
  • Loadbalancer: 192.168.1.206
  1. Cài đặt k8s
    1. Cài đặt k8s bằng kubeadm

Thực hiện trên cả 3 servers

Thêm hosts

echo -e “192.168.1.201 k8s-master-1\n192.168.1.202 k8s-worker-1\n192.168.1.203 k8s-worker-2” | sudo tee -a /etc/hosts

Cập nhật và nâng cấp hệ thống

sudo apt update -y && sudo apt upgrade -y

Tạo user riêng để sử dụng cho cụm

sudo adduser devops
sudo usermod -aG sudo devops
cd $HOME

Tắt swap (nếu không tắt swap thì sẽ không join được cụm)

sudo swapoff -a

sudo sed -i ‘/swap.img/s/^/#/’ /etc/fstab

Cấu hình module kernel

echo -e “overlaynbr_netfilter” | sudo tee /etc/modules-load.d/containerd.conf > /dev/null

Tải module kernel

sudo modprobe overlay

sudo modprobe br_netfilter

echo “net.bridge.bridge-nf-call-ip6tables = 1” | sudo tee -a /etc/sysctl.d/kubernetes.conf

echo “net.bridge.bridge-nf-call-iptables = 1” | sudo tee -a /etc/sysctl.d/kubernetes.conf

echo “net.ipv4.ip_forward = 1” | sudo tee -a /etc/sysctl.d/kubernetes.conf

sudo sysctl –system

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”

Cài đặt containerd

sudo apt update -y

sudo apt install -y containerd.io

Cấu hình containerd

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

sudo sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml

Khởi động containerd

sudo systemctl restart containerd

sudo systemctl enable containerd

Thêm kho lưu trữ Kubernetes

echo “deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /” | sudo tee /etc/apt/sources.list.d/kubernetes.list

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg –dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

Cài đặt các gói Kubernetes

sudo apt update -y

sudo apt install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

Nếu muốn reset cụm thì chạy các lệnh sau:

sudo kubeadm reset -f

sudo rm -rf /var/lib/etcd
sudo rm -rf /etc/kubernetes/manifests/*

    1. Khởi tạo cụm. Thực hiện trên server k8s-master-1

sudo kubeadm init

A computer screen shot of a program Description automatically generated

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Để join worker vào cụm ta thực hiện các cấu lệnh sau trên server k8s-worker-1 và k8s-worker-2

sudo kubeadm join 192.168.1.201:6443 –token otwocf.ps7wbsqg1l575jzn \

–discovery-token-ca-cert-hash sha256:fc240b426684cb4fcfcfbb6d3f06ae5114f55db21c080e154f1bbab4a8c0dcfc

A computer screen with text Description automatically generated

Chạy lệnh kubectl get nodes để kiểm tra trạng thái cụm. Lúc này ta thấy cụm đang notready do chưa có cấu hình network. Để cấu hình network cho cụm ta chạy lệnh dưới đây.

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml

A screen shot of a computer Description automatically generated

Kiểm tra lại trạng thái của cụm

A black screen with white text Description automatically generated

  1. Các công cụ quản lý k8s

Có rất nhiều công cụ để có thể quản lý cụm k8s:

  • Command (k9s)
  • Desktop app (lens)
  • Website (rancher)

Rancher là một nền tảng quản lý Kubernetes mã nguồn mở giúp các tổ chức triển khai, quản lý và vận hành các cụm Kubernetes (K8s) trong môi trường Cloud hoặc on-demand. Rancher cung cấp giao diện người dùng trực quan và các công cụ mạnh mẽ để quản lý các cluster Kubernetes và các ứng dụng chạy trên đó

    1. Cài đặt rancher

Thực hiện trên server rancher

Tạo phân vùng để lưu trữ riêng cho dư liệu của rancher

sudo mkfs.ext4 -m 0 /dev/sdb

mkdir /data

echo “/dev/sdb /data ext4 defaults 0 0” | sudo tee -a /etc/fstab

mount -a

sudo df -h

A screen shot of a computer Description automatically generated

Cài đặt docker và docker-compose

apt install docker.io && apt install docker-compose

A black background with white text Description automatically generated

Hình : Kiểm tra version docker và docker-compose

Cài đặt rancher bằng docker.

Lưu ý: cần phải kiểm tra version của rancher phù hợp với phiên bản của k8s để tránh bị lỗi.(Search keyword: rancher version matrix)

Ở đây cụm k8s của mình là version 1.30, và version mới nhất của rancher là 2.10.1 support cho version này. Nên mình sẽ cài rancher version mới nhất.

A screenshot of a computer Description automatically generated

Hình : Kiểm tra version của rancher phù hợp với version của cụm

Tạo thư mục làm việc cho rancher

mkdir /projects/rancher

cd /projects/rancher

vi docker-compose.yml

version: ‘3’

services:

rancher-server:

image: rancher/rancher:v2.10.1

container_name: rancher-server

restart: unless-stopped

ports:

– “80:80”

– “443:443”

volumes:

– /data/rancher/data:/var/lib/rancher

privileged: true

Sau khi viết docker-compose file thì sẽ chạy lệnh sau để chạy container

docker-compose up -d

A screenshot of a computer program Description automatically generated

Kiểm tra trạng thái container đã chạy chưa

A screen shot of a computer Description automatically generated

Truy cập vào trình duyệt bằng địa chỉ của rancher server

A screenshot of a computer Description automatically generated

Quay lại terminal và chạy lệnh sau để lấy password của rancher.

docker logs rancher-server 2>&1 | grep “Bootstrap Password:”

Sau khi lấy được password thì nhập password để login

A screenshot of a computer screen Description automatically generated

Thiết lập mật khẩu mới

A screenshot of a computer screen Description automatically generated

Sau khi đăng nhập xong thì đây là giao diện của rancher

A screenshot of a website Description automatically generated

    1. Thêm cụm k8s vào rancher

Để thêm cụm k8s vào rancher thì ta nhấn vào Import Existing

A screenshot of a computer Description automatically generated

Rancher có thể quản lý được rất nhiều cụm k8s, từ cloud (AKS, EKS, GKE) hoặc On-Premise, ở đây là cụm on-premise nên sẽ chọn Generic

A screenshot of a computer Description automatically generated

Nhập tên Cluster và nhấn Create (ở đây cluster của mình cho dự án ecommerce)

A screenshot of a computer Description automatically generated

Tiếp theo ta sẽ copy câu lệnh sau chạy trên node master để tiến hành import cụm vào rancher.

Chú ý: nếu domain có xác thực certificate thì ta có thể chọn dòng đầu tiên. Trong trường hợp domain là self-sign certificate thì chọn dòng thứ 2

A screenshot of a computer Description automatically generated

Sau khi chạy câu lệnh trên 1 lúc thì cluster đã chuyển từ pending sang thành waiting, lúc này thì ta chỉ cần chờ 1 chút để cụm được add vào.

A screenshot of a computer Description automatically generated

Sau 1 lúc thì cụm đã được thêm thành công vào và ở trạng thái active

A screenshot of a computer Description automatically generated

Nhấn vào cluster để xem thông tin các tài nguyên trong cụm

A screenshot of a computer Description automatically generated

Leave a Reply

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 *