[Kubernetes] Cài đặt Kubernetes trên Ubuntu

Tiếp nối loạt bài về Kubernetes, hôm nay mình sẽ hướng dẫn các bạn cài đặt Kubernetes -trên Ubuntu 14.04  (dù mới ra 16.04LTS nhưng mình chưa có lên). Trong bài này thì mình sẽ hướng dẫn cài đặt trên 1 cụm có 3 node: 1 master node và 2 worker nodes. Bạn có thể thay đổi số lượng node một cách rất thoải mái bằng cách thay đổi các config (dễ lắm).

Các script để cài đặt, này đều được viết sẵn bởi Cloud team from Zhejiang University . Và công việc của chúng ta chỉ là config và BOOM#@#@. Ta đã có 1 Kubernetes Cluster.

Không nói loanh quanh nữa, chúng ta cùng cài đặt nào.

I, Yêu cầu

1, Tất cả các nodes đều cài đặt docker version 1.2 trở lên.

2. Tất cả các node có thể giao tiếp với nhau. Master node cần phải được kết nối với Internet để có thể download các file cần thiết, còn worker node thì có hay không cũng được.

3, Mình đã cài dặt thành công trên 1 cụm 3 nodes, 1 master và 2 worker (cả 3 node đều chạy Ubuntu 14.04 server).

4, Tất cả các remote server có thể ssh vào từ máy cài đặt mà không cần password. (tức là từ máy ta đang làm việc thì có thể ssh vào 2 con máy kia -1 master – 1 worker mà không cần pass)

II, Cài đặt Cluster.

Tiếp nhé, trước tiên là clone code về máy.

$ git clone https://github.com/kubernetes/kubernetes.git

Ta sẽ làm việc trong thư mục /kubernetes vừa tải về. Tiếp theo

Config và start the Kubernetes cluster

Như đã nói ở trên rồi, script đã viết sẽ tự động chạy và download các thành phần cần thiết. Tuy nhiên chúng ta có thể thay đổi 1 số biến môi trường. Ví dụ phiên bản mặc định của etcd là 2.2.1, của flannel là 0.5.5, hay k8s là 1.1.8. Bạn có thể thay thế chúng bằng các phiên bản mới hơn bằng cách.

$ export KUBE_VERSION=1.1.8
$ export FLANNEL_VERSION=0.5.0
$ export ETCD_VERSION=2.2.0

Tiếp, ví dụ Kuber’s Cluster của mình sẽ có cấu trúc kiểu này.

Screenshot from 2016-05-17 09:57:38.png

Đầu tiên chúng ta sẽ config các thông tin của cluster trong file /cluster/ubuntu/config-default.sh, theo kiểu như sau.

export nodes="vcap@10.10.103.250 vcap@10.10.103.162 vcap@10.10.103.223"

export role="ai i i"

export NUM_NODES=${NUM_NODES:-3}

export SERVICE_CLUSTER_IP_RANGE=192.168.3.0/24

export FLANNEL_NET=172.16.0.0/16

Trong đó,

  • nodes là các node, gồm các <user@ip>, bạn có thể thay vcap bằng tên user của bạn, ip là ip của bạn. ok ^^)
  • role: phân quyền tương ứng cho các node ở trên. “a” đại diện cho master và “i” thì đại điện cho node bình thường.
  • NUM_NODES: Biến xác định tổng số nodes.
  • SERVICE_CLUSTER_IP_RANGE: Biến định nghĩa dải IP trong Kubernetes. Cái này bạn nên config sao cho nó phù hợp và tương thích với IaaS của bạn (nếu có).
  • PLANNEL_NET: định danh IP range sử dụng trong tầng network của Flannel, và không được conflict với SERVICE_CLUSTER_IP_RANGE đã định nghĩa ở trên.

Thế là đã config xong,

Từ thư mục clusters/, bạn chạy dòng lệnh sau.

$ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

Scipt sẽ làm phần còn lại cho cho các bạn. Việc duy nhất bạn cần làm là gõ password.

Deploying node on machine 10.10.103.223
...
[sudo] password to start node: 

Nếu mọi công việc đều tốt, thì sau khi cài đặt xong, bạn sẽ nhận được message từ k8s thông báo cluster đã được triển khai.

Cluster validation succeeded

Test cài đặt.

Bạn có thể sử dụng kubeclt để check xem cluster đã được cài đặt chưa (kubeclt trong thư mục /cluster/ubuntu/binaries thì phải – bạn có thể make link nó vào trong $HOME_PATH để có thể gọi nó từ bất cứ đâu.

$ kubectl get nodes
NAME            LABELS                                 STATUS
10.10.103.162   kubernetes.io/hostname=10.10.103.162   Ready
10.10.103.223   kubernetes.io/hostname=10.10.103.223   Ready
10.10.103.250   kubernetes.io/hostname=10.10.103.250   Ready

III, Deploy DNS Addon.

Config DNS sẽ được config trong cluster/ubuntu/config-default.sh.

ENABLE_CLUSTER_DNS="${KUBE_ENABLE_CLUSTER_DNS:-true}"

DNS_SERVER_IP="192.168.3.10"

DNS_DOMAIN="cluster.local"

DNS_REPLICAS=1

DNS_SERVER_IP phải là ip được định danh trong dải mạng SERVICE_CLUSTER_IP_RANGEDNS_REPLICAS thể hiện có bao nhiêu pod chạy trên cùng 1 cluster.

Xong, giờ thì vào chạy thôi.

$ cd cluster/ubuntu
$ KUBERNETES_PROVIDER=ubuntu ./deployAddons.sh

sau khi chạy xong, thì bạn có thể chạy lệnh  $ kubectl get pods –namespace=kube-system để xem DNS đang chạy trên cluster của chúng ta.

Trong các số tiếp theo, mình sẽ đi sâu tìm hiểu, làm rõ, triển khaicác thành phần như pods, replication controll, deployment…. ^^) Các bạn chờ nhé.

Ngọc Luân – Hà Nội 17-5-2016.

One comment

  1. Hi Bạn,

    “Các script để cài đặt, này đều được viết sẵn bởi Cloud team from Zhejiang University . Và công việc của chúng ta chỉ là config và BOOM#@#@. Ta đã có 1 Kubernetes Cluster.”

    Git của team này đã đóng rồi, bạn có thể public script chỗ này không?

    Like

Leave a comment