- vừa được xem lúc

[DEVOPS] [K8S] Phần 2: Setup Kubernetes Cluster

0 0 13

Người đăng: Hoàng Đại

Theo Viblo Asia

Xin chào các mọi người. Hy vọng các bài viết có thể giúp ích cho mọi người. Bài viết này là Phần 2 - Setup Kubernetes Cluster

I. Cài đặt một Kubernetes cluster

1.1. Cài đặt Kubernetes cluster cơ bản

Đây sẽ là hướng dẫn cài đặt Kubernetes cluster với 2 node: master node và worker node. Trong trường hợp sử dụng nhiều node thì làm tương tự các bước trên worker node dưới đây.

1.1.1. Master node
Hostname: masternode
OS VMware: Ubuntu 20.04
IP: 192.168.12.13
Container runtimer: containerd
Plugin network: calico

Bước 1: Update hệ thống và cài các gói cần thiết
sudo apt -y update && sudo apt -y upgrade
sudo apt -y install curl apt-transport-https vim git wget gnupg2 software-properties-common ca-certificates

Bước 2: Cài đặt kubelet, kubeadm và kubectl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt -y update
sudo apt -y install kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

kubectl version --client && kubeadm version

Bước 3: Tắt Swap
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo nano /etc/fstab

sudo swapoff -a
sudo mount -a
free -h

sudo modprobe overlay
sudo modprobe br_netfilter

sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sudo sysctl --system

Bước 4: Cài đặt container runtime

sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update
sudo apt install -y containerd.io

sudo su -
mkdir -p /etc/containerd
containerd config default>/etc/containerd/config.toml

sudo systemctl restart containerd
sudo systemctl enable containerd
systemctl status containerd

Bước 5: Cài đặt master node
lsmod | grep br_netfilter
sudo systemctl enable kubelet
sudo kubeadm config images pull

sudo kubeadm init \ --pod-network-cidr=192.168.0.0/16 \ --cri-socket unix:///run/containerd/containerd.sock \ --apiserver-advertise-address=192.168.12.13

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

kubectl cluster-info

Bước 6: Cài network plugin trên master node
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml

watch kubectl get pods --all-namespaces

Cho phép Pod có thể chạy trên master node
kubectl taint nodes --all node-role.kubernetes.io/control-plane-

1.1.2. Worker node
Hostname: workernode
OS VMware: Ubuntu 20.04
IP: 192.168.12.14
Container runtimer: containerd\

Bước 1 -> Bước 4: Thực hiện tương tự như master node ở trên.

Bước 5: Join vào một cluster
kubeadm join 192.168.12.13:6443 --token 28tobh.qjp2ib31yr6cekzi --discovery-token-ca-cert-hash sha256:cb9cf4668ffd694c2a29dae9bf6996b88d8db981e05b4de824a4c0187d01a51c

1.2. Cài đặt cluster đặc biệt - Minikube

Cần cài đặt docker ce trước khi thực hiện các bước tiếp theo.

Hostname: host02
OS: Ubuntu 20.04 live
IP: 192.168.31.126

Bước 1: Update hệ thống
sudo apt -y update && apt -y upgrade

Bước 2: Tải gói minikube
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

sudo cp minikube-linux-amd64 /usr/local/bin/minikube
sudo chmod 755 /usr/local/bin/minikube

Kiểm tra minikube
minikube version

Bước 3: Cài đặt plugin kubectl
Việc giao tiếp trong cluster sừ dụng plugin kubectl.
curl -LO https://storage.googleapis.com/kubernetes-release/release/' curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt' /bin/linux/amd64/kubectl

sudo chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

Kiểm tra kubectl
kubectl version -o json

Quản lý minikube
minikube start/status/stop

minikube delete

minikube ssh

minikube addons list

minikube dashboard

minikube dashboard --url

1.3. Quản lý cluster đã triển khai

kubectl get nodes
kubectl get nodes -o wide
kubectl config view
kubectl cluster-info
kubectl get nodes
kubectl get pod

II. Cài đặt Dashboard

Cài đặt giao diện quản lý cho cluster là một tùy chọn có thể sử dụng hoặc không. Việc theo tác trên giao diện hoàn toàn có thế thực hiện bằng các CLI. Vì vậy nếu muốn học sâu thì sử dụng CLI sẽ là phương án tốt nhất.

Trong bài viết này sẽ hướng dẫn cài đặt dashboard bằng Nodeport
Bước 1:
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml

kubectl get svc -n kubernetes-dashboard
kubectl --namespace kubernetes-dashboard patch svc kubernetes-dashboard -p '{"spec": {"type": "NodePort"}}'

kubectl get svc -n kubernetes-dashboard kubernetes-dashboard -o yaml

vim nodeport_dashboard_patch.yaml\

spec: ports: - nodePort: 32000 port: 443 protocol: TCP targetPort: 8443

kubectl -n kubernetes-dashboard patch svc kubernetes-dashboard --patch "$(cat nodeport_dashboard_patch.yaml)"

kubectl get deployments -n kubernetes-dashboard
kubectl get pods -n kubernetes-dashboard
kubectl get service -n kubernetes-dashboard

Bước 2: Truy cập link dashboard và tạo token login
Truy cập vào link https://ip:32000

Mình rất xin lỗi khi chưa thể update thêm các bài viết mới trong series về K8S vì khoảng thời gian gần đây mình khá bận do mình đã bắt đầu công việc mới với vị trí chuyên viên DevOps. Mặc dù mình đã có 4 5 bản nháp cho các bài tiếp theo trong series này. Mình chắc chắn sẽ quay lại làm tiếp series này trong thời gian sắp tới. Và để bù lại thì mình sẽ ra các bài tiếp theo liên quan đến Ansible, Terraform, AWS với góc nhìn là một chuyên viên DevOps. Mình xin cám ơn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 80

- vừa được xem lúc

Thực hành K8S trên Google Cloud

Kubernetes (K8S) trở nên quá phổ biến ở thời điểm hiện tại, ai cũng nói về nó. Trong bài hôm nay mình sẽ không đi quá nhiều vào các định nghĩa, mà đi thẳng vào thực tế để mọi người dễ hình dung.

0 0 19

- vừa được xem lúc

Kubernetes best practices - Liveness và Readiness Health checks

Mở đầu. Kubernetes cung cấp cho bạn một framework để chạy các hệ phân tán một cách mạnh mẽ.

0 0 35

- vừa được xem lúc

Kubernetes - deployment.yaml explained

Trong bài trước, mình có giới thiệu chạy các câu lệnh K8S bằng Command Line. Để tạo 1 deloyment đơn giản chỉ cần chạy lệnh.

0 0 76

- vừa được xem lúc

Tìm hiểu cơ bản về Kubernetes - K8s (Part 2): Minikube

Lời mở đầu. .

0 0 35

- vừa được xem lúc

ETCD - Bộ não của Kubernetes và cách cài đặt cụm ETCD Cluster (High Availability)

Hello anh em, sau vài ngày nghiên cứu đọc lại liệu cũng như cài cắm thủ công đủ thể loại, với vô số lỗi fail thì mình cũng cài đặt thành công cụm etcd cluster một cách thủ công. Trước giờ chuyên tạo c

0 0 31