Kubernetes Cơ Bản

Tổng quan về Kubernetes

Giới thiệu Kubernetes

Giao diện tương tác với thời gian chạy container (CRI) cho phép Kubernetes hoạt động với các runtime khác nhau như runc hoặc rkt. Tiêu chuẩn lưu trữ (CSI) giúp tích hợp hệ thống lưu trữ như Ceph hay NetApp. Mặt khác, tiêu chuẩn mạng (CNI) định nghĩa cách thức hoạt động của mạng trong Kubernetes.

# Các thành phần chính:
thông tin api: cung cấp truy cập tài nguyên và kiểm soát quyền truy cập.
quản lý điều khiển: duy trì trạng thái toàn bộ cụm.
điều phối: phân bổ Pod tới máy chủ phù hợp.
thời gian chạy node: quản lý vòng đời container và cấu hình mạng/lưu trữ.
dịch vụ proxy: đảm bảo dịch vụ nội bộ có thể phát hiện và cân bằng tải.
cơ sở dữ liệu etcd: lưu trữ thông tin trạng thái cụm.

# Các thành phần tùy chọn:
hệ thống dns: hỗ trợ giải quyết tên trong cụm.
bộ điều khiển ingress: tạo lối vào từ bên ngoài.
theo dõi hiệu suất: giám sát tài nguyên.
giao diện người dùng: hiển thị thông tin cụm.
liên kết đa vùng: quản lý nhiều cụm ở các khu vực khác nhau.
lưu trữ nhật ký: thu thập, lưu trữ và tìm kiếm log.

Cài đặt Kubernetes

1. Quy hoạch và cấu hình ban đầu

Kiến trúc hệ thống cần được lên kế hoạch trước khi triển khai:

  • Yêu cầu tối thiểu: CentOS 7.3 trở lên.
  • Tắt iptables, SELinux, NetworkManager và swap.
# Phân bổ địa chỉ IP
master: 192.168.1.10/11/12
proxy: 192.168.1.13/14
harbor: 192.168.1.15
node: 192.168.1.16/17/18
etcd: 192.168.1.19

2. Khởi tạo hệ thống

Tắt swap và đồng bộ thời gian trên tất cả các node:

# Đồng bộ thời gian
yum install chrony -y
sed -i 's/server/#server/g' /etc/chrony.conf
echo "server ntp1.aliyun.com iburst" >> /etc/chrony.conf
systemctl restart chronyd

# Tắt SELinux và firewall
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld && systemctl disable firewalld

# Tắt swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

3. Tối ưu hóa hệ thống

Thiết lập các tham số kernel để tăng hiệu suất:

cat <<EOF > /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF
sysctl --system

4. Cài đặt IPVS

Đảm bảo mọi node đều hỗ trợ IPVS:

modprobe br_netfilter
cat <<EOF > /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF

5. Cài đặt kubeadm

Cập nhật kho APT và thêm khóa công cộng:

apt update
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt update
apt install -y kubelet kubeadm kubectl

6. Cấu hình Docker

Lắp đặt Docker và cri-dockerd:

# Cài Docker
apt install -y docker.io

# Cài cri-dockerd
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.5/cri-dockerd-0.3.5-linux-amd64.tgz
tar zxvf cri-dockerd-0.3.5-linux-amd64.tgz -C /usr/local/bin/

7. Khởi tạo cụm Kubernetes

Khởi tạo master node với các tham số cơ bản:

kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<IP-Master>

Sao chép file cấu hình để sử dụng kubectl:

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

8. Cài đặt plugin mạng

Áp dụng một plugin mạng như Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Quản lý tài nguyên trong Kubernetes

1. Định nghĩa tài nguyên

File YAML là cách phổ biến nhất để định nghĩa tài nguyên trong Kubernetes:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

2. Kiểm tra trạng thái

Kiểm tra tình trạng pod và dịch vụ:

kubectl get pods
kubectl describe pod <tên-pod>

3. Volume

Các loại volume phổ biến:

  • emptyDir: Xóa khi pod bị xóa.
  • hostPath: Sử dụng đường dẫn trên node.
  • NFS: Lưu trữ qua mạng.

Thẻ: Kubernetes docker kubeadm

Đăng vào ngày 7 tháng 6 lúc 23:29