Làm thế nào để triển khai môi trường kubernetes product để deploy microservice
Bài đăng này đã không được cập nhật trong 4 năm
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
- Clone microservice sock shop trên git repo:
$ git clone https://github.com/microservices-demo/microservices-demo.git
- Tạo namspace
$ kubectl create namespace sock-shop
- 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