Chuyển đến nội dung chính

Bài đăng

Hiển thị các bài đăng có nhãn kubernetes cluster

Docker sẽ bị loại bỏ trên những bản release tiếp Theo của Kubernetes.

  Ngày 02 tháng 12 năm 2020 , Kubernetes ra thông báo là docker sẽ được loại bỏ trên những bản kubernetes tiếp theo.  Từ bản Kubernetes 1.22 thì docker sẽ không được hỗ trợ trên bộ Kubernetes.  Như hình vẽ thì các node sẽ giao tiếp với Control Plane, và trên mỗi node, kubelet sẽ lấy thông tin node và thực thi CRI để tạo/xoá container chạy trên node mà kubenet đang quản lý.  Trong một bộ Kubernetes cluster thì docker chỉ đóng vai trò là CRI cho kubernetes Cluster.  Vậy CRI là gì ? CRI là viết tắt bởi Container Runtime Interface, là phần mềm đảm nhiệm cho container chạy.  Trong Kubernetes kubelets thì docker làm chức năng CRI dưới hình thái là một module gọi lại dockershim, vậy thực chất thì module dockershim bị loại bỏ khỏi Kubernetes ở các phiên bản tiếp theo.  Lý do :  Theo như Kubernetes đưa ra thì docker chỉ có chức năng CRI trong cluster nhưng nó vẫn có những thành phần không cần thiết được cài đặt trên cluster, làm cho cluster hoạt động nặng hơn,  [hinh h5] Theo như hình trên thì

Các thành phần Kubernetes.

Khi bạn triển khai Kubernetes, Kubernetes cluster được hình thành.  Một Kubernetes cluster chứa một bộ các worker còn gọi là node. Bên trong những node này chạy các container, mỗi cluster có ít nhất một worker node.  Những worker node chứa các ***POD, những POD này là những thành phần ứng dụng workload.  Control plane quản lý các worker node và các POD trong một cluster.  Trên môi trường sản phẩm, Control Plane thường chạy nhiều tính toán và nhiều nodes , nó có khả năng fault-tolerance* và high-availability**.  Đây là các components trong một Kubernetes Cluster.  1. Các thành phần Control Plane:   Các thành phần Control plane nó quyết định toàn cục của một cluster, cũng như phát hiện và phản hồi một sự kiện trong cluster.  Các thành phần control plane có thể chạy bất kỳ trên máy nào trong cluster, Tuy nhiên để đơn giản, ta set up một đoạn code để start tất cả các thành phần control plane trong một một node và không chạy những ứng dụng dành cho người dùng trên node này.  + kube-apiserve

Stateful Sets trong kubernetes.

 Khi set up một hệ thống kubernetes, có cả database trong đó thì phần tạo database master - slave trong kubernetes là phần tương đối khó nhằn,  Ví dụ trong bài viết này ta sẽ tạo một pod master và 2 pods slave , Pod master cho phép đọc và ghi dữ liệu, trong khi các pods slave còn lại chỉ cho phép đọc. Trước tiên ta sẽ set up pod master trước và sau đó là các slave.  Các bước set up các pod master và slave như hình.  Lúc này ta khai báo biến MASTER_HOST trỏ đến mysql-master để dữ liệu cần replicate từ master đã chỉ định  Trong headless service cần khai báo metadata name là:  name : mysql-h clusterIP : None   Và trong pod-definition.yml thì cần khai báo : subdomain : mysql-h hostname : mysql-pod Copy metadata và spec vào phần template của Deployment và đổi Deployment thành StatefulSet  Lúc này DNS trong kubernetes sẽ là : mysql-pod.mysql-h.default.svc.cluster.local  Nó sẽ bị duplicate DNS như trên.  Stateful Sets trong kubernetes là khi bạn tạo các pod StatefulSet thì pod được tạo đầu t

NodePort , Load Balancer và Ingess trong kubernetes.

Khái niệm NodePort , Load balancer và Ingress hay làm chúng ta lẫn lộn. Để làm rõ vấn đề này bạn cần vững và hiểu các khái niệm sau :  NodePort :  NodePort là dịch vụ cơ bản nhất của Kubernetes để traffic bên ngoài đi vào dịch vụ bên trong.  NodePort được định nghĩa trong file YAML như sau:  apiVersion: v1 kind: Service metadata: name: my-nodeport-service spec: selector: app: my-app type: NodePort ports: - name: http port: 80 targetPort: 80 nodePort: 30036 protocol: TCP NodePort hiện tại của service là : 30036 Loadbalancer:   Loadbalancer sẽ cung cấp 1 single IP address để truy cập vào dịch vụ phía trong:  Ingress: Ingress không phải là kiểu dịch vụ như 2 dịch vụ nói trên,  Ingress giống nginx hơn, nó control domain, subdomain và các sub path phía sau domain: Define 1 ingress như sau:  apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress spec: backend: serviceName: other

Cài đặt kubernetes cluster trên ubuntu.

I. Yêu cầu cầu hình server ubuntu trước khi cài đặt kubernetes. Master : 2 GB RAM 2 Cores of CPU Slave /  Node : 1 GB RAM 1 Core of CPU   I.1 Update repository. apt-get update   I.2 Tắt swap: swapoff -a nano /etc/fstab Coment out, để khi server reboot, swap không được khởi tạo. I.3 Update hostname: nano /etc/hostname   I.4 Update file hosts: nano /etc/hosts  I.5 Cài đặt OpenSSH-server: sudo apt-get install openssh-server  I.6 Cài đặt docker: # sudo su # apt-get update # apt-get install -y docker.io Cài đặt repo cho kubernetes : # apt-get update && apt-get install -y apt-transport-https curl # curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - # cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF # apt-get update  I.7 : Cài đặt kubeadm, Kubelet And Kubectl   # apt-get install -y kubelet kubeadm kubectl Updat