Làm thế nào để triển khai môi trường kubernetes product để deploy microservice

Chào các bạn hôm nay mình xin chia sẻ nhanh với các bạn các bước tạo kubernetes cluster trên máy Ubuntu 16.04 để deploy microservice

Yêu cầu trước khi cài đặt Kubernetes

Vì chúng ta đang làm với VMs (máy ảo), tôi đề nghị các bạn làm theo cài đặt cho máy ảo như sau :
*Master:
4 GB RAM
2 Cores of CPU
*Slave/ Node:
2 GB RAM
1 Core of CPU

Bước 1: cài đặt kubeadm, kubelet, kubectl, docker for master, node

$ sudo su

# 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
# apt-get install -y kubelet kubeadm kubectl docker.io

Các bạn có thể đọc thêm ở đây!

Bước 2: Bây giờ chúng ta sẽ khởi chạy kubernetes cluster trên máy chủ (master)

Sử dụng root để chạy :

$ sudo -i 
# kubeadm init --apiserver-advertise-address=192.168.7.40 --pod-network-cidr=10.244.0.0/16

Ở đây 192.168.7.40 là địa chỉ ip của máy chủ master, 10.244.0.0/16 là dải mạng mạc định

Như đề cập ở trên hình trên , chúng ta sẽ chay các lệnh sau đây ở vai trò user bình thường

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

Để kiểm tra xem kubenete cluster đã hoạt động hay chưa chạy lệnh :

$ kubectl get pods -o wide --all-namespaces

Như bạn có thể thấy coredsn của cùng tra vẫn đang ở trạng thái pending, điều này là do chúng ta đang thiếu một mạng cho pods (pods network)

Bước 3:Cài đặt mạng cho pods , ở đây chúng ta sẽ dử dụng mạng flannel

Tạo một thư mực kube, trong đó ta tạo file kube-flannel.yaml

Chạy cài đặt mạng :

$ kubectl apply -f kube-flannel.yaml

$ kubectl get pods -o wide --all-namespaces

Có thể sau khi cài đặt xong bạn bị lỗi ở crashloopbackoff coredns như ở trên. Làm theo dưới đây :

$ kubectl edit cm coredns -n kube-system
comment loop: loop -> #loop

Chạy :

$ kubectl get pods -o wide --all-namespaces

Coredns đã hoạt động

Bước 4: thêm Node Machine vào cluster

Chạy câu lệnh dưới đây để lấy câu lệnh join :

$ kubeadm token create --print-join-command

Thực hiện join máy node, chạy câu lệnh dưới đây trên Node Machine

# kubeadm join 192.168.7.40:6443 --token 7yfzj7.geq97e65aceekdhk --discovery-token-ca-cert-hash sha256:da83c706547d4555a4a8c71ec230698fba32839384346e77a2b6c60ea44f7ba8

Kiểm tra lại :

$ kubectl get nodes

$ kubectl get pods -o wide --all-namespaces

Như bạn có thể thấy ở trên,chúng ta có kube-proxy và flannel network ở máy node knote1

Bước 5 deploy thử một service

  1. Clone microservice sock shop trên git repo:
$ git clone https://github.com/microservices-demo/microservices-demo.git
  1. Tạo namspace
$ kubectl create namespace sock-shop
  1. Chạy demo
kubectl apply -f complete-demo.yaml

$ kubectl get pods -o wide --all-namespaces

Ghé thăm trang http://192.168.7.40:30001/ (192.168.7.40 là địa chỉ ip của master ) để kiểm tra

Vậy là ở trên mình đã hướng dẫn các bạn từng bước để xây dựng môi trường kubenetes cho deploy microservice. Vì tập trung vào các bước mà bỏ qua giải thích các kiến thức liên quan. Vì vậy các bạn có câu hỏi gì thì có thể comment bên dưới!

Chúc các bạn thành công !

Tài liệu tham khảo :
https://www.edureka.co/blog/install-kubernetes-on-ubuntu
https://www.gremlin.com/community/tutorials/how-to-create-a-kubernetes-cluster-on-ubuntu-16-04-with-kubeadm-and-weave-net/


All Rights Reserved