Triển khai Kubernetes với Kubeadm trên CentOS 7

0

1. Kubeadm là gì?

Kubeadm là một công cụ được phát triển bởi Kubernetes, cho phép bạn thiết lập và chạy một cụm khả thi tối thiểu bằng cách làm theo các phương pháp hay nhất. Nó sẽ chỉ khởi động cụm của bạn, không cung cấp máy. Những thứ như addons, bảng điều khiển Kubernetes, giải pháp giám sát, v.v. không phải là thứ mà kubeadm sẽ làm cho bạn.

2. Điều kiện

  • RAM 2 GB trở lên trên mỗi máy
  • 2 CPU trở lên trên máy chủ

 

3. Cấu hình worker và master

Dưới đây là các bước chúng ta sẽ phải thực hiện trên cả nút chính và nút công nhân:

  • Bản cập nhật & gói Yum
  • cài đặt docker
  • Vô hiệu hóa selinux
  • Vô hiệu hóa trao đổi
  • Tắt tường lửa
  • Cập nhật IPTables
  • Cài đặt kubelet/kubeadm/kubectl

4. Cài đặt Docker

Chúng tôi sẽ thêm kho lưu trữ Docker vào yum và cài đặt cụ thể 18.06.2. Sau khi Docker được cài đặt, chúng ta sẽ cần định cấu hình trình nền docker theo các cài đặt do Kubernetes đề xuất.

###Add yum-utils, if not installed already
yum install yum-utils

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

###Install Docker CE.
yum update && yum install docker-ce-18.06.2.ce


###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 enable docker.service
systemctl restart docker

5. Vô hiệu hóa SELinux

Vì chúng tôi đang sử dụng CentOS, chúng tôi cần tắt SELinux. Điều này là cần thiết để cho phép vùng chứa truy cập vào hệ thống tệp máy chủ.

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disable/' /etc/selinux/config

6. Vô hiệu hóa swap

Hoán đổi cần phải được tắt để cho phép kubelet hoạt động bình thường.

sed -i '/swap/d' /etc/fstab
swapoff -a

7. Tắt tường lửa

Kubernetes sử dụng IPTables để xử lý lưu lượng truy cập vào và ra – vì vậy để tránh mọi sự cố, chúng tôi tắt tường lửa.

systemctl disable firewalld
systemctl stop firewalld

8. Cập nhật IPTables

Kubernetes khuyến nghị rằng chúng tôi đảm bảo net.bridge.bridge-nf-call-iptablesđược đặt thành 1. Điều này là do sự cố trong đó REHL/CentOS 7 gặp sự cố với lưu lượng truy cập được định tuyến lại không chính xác do bỏ qua iptables.

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

9. Cài đặt kubelet/kubeadm/kubectl

Chúng ta sẽ cần thêm repo kubernetes vào yum. Khi chúng tôi làm điều đó, chúng tôi chỉ cần chạy lệnh cài đặt và kích hoạt kubelet.

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
exclude=kube*
EOF

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

10. Thiết lập Master Node

Chúng tôi muốn khởi tạo nút chính của mình bằng cách chạy lệnh sau. Bạn sẽ muốn thay thế địa chỉ IP của nút chính trong lệnh bên dưới. Ngoài ra, chúng tôi sẽ chuyển vào pod-network-cidr để giúp chúng tôi dễ dàng hơn sau này khi chúng tôi cài đặt lớp phủ mạng Flannel.

kubeadm init --apiserver-advertise-address=YOUR_IP_HERE --pod-network-cidr=10.244.0.0/16

Quá trình này có thể mất một chút thời gian để hoàn thành nhưng sau khi hoàn thành, bạn sẽ thấy nội dung tương tự ở cuối đầu ra như sau.

kubeadm join YOUR_IP:6443 --token 4if8c2.pbqh82zxcg8rswui \

--discovery-token-ca-cert-hash sha256:a0b2bb2b31bf7b06bb5058540f02724240fc9447b0e457e049e59d2ce19fcba2

Lệnh này là những gì các nút công nhân của bạn cần thực thi để tham gia cụm, vì vậy hãy lưu ý về nó.

Tiếp theo là Flannel. Flannel là thứ cho phép giao tiếp giữa pod với pod. Có nhiều loại lớp phủ mạng khác mà bạn có thể cài đặt nhưng để đơn giản, hướng dẫn này sẽ sử dụng Flannel.

Sao chép kube/configtệp qua của bạn $Homeđể bạn có thể thực hiện kubectlcác lệnh.

mkdir $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config

Một bước cuối cùng trên nút chính là cài đặt Flannel. Chạy lệnh sau.

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

Với cấu hình này được sao chép, bạn sẽ có thể chạy kubectl get csvà nhận được phản hồi.

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}

Nút chính của bạn đã được thiết lập và sẵn sàng hoạt động. Vào nút công nhân!

11.Worker Node

Tại thời điểm này, không có công việc bổ sung nào cần thiết trên nút worker. Tất cả những gì chúng ta cần làm là chạy kubeadm joinlệnh mà chúng ta nhận được từ kubeadm initđầu ra của mình.

Nếu chẳng may bạn đặt sai lệnh tham gia kubeadm, bạn có thể tạo một lệnh khác trên nút chính bằng cách chạy

kubeadm token create --print-join-command

Khi bạn chạy lệnh tham gia kubeadm, nếu bạn chạy kubectl get nodestrên bản gốc, bạn sẽ thấy kết quả tương tự như sau.

NAME          STATUS   ROLES    AGE    VERSION
k8-master   Ready    master   107m   v1.14.2
k8-worker   Ready    <none>   45m    v1.14.2

Leave a Reply

Your email address will not be published. Required fields are marked *