Phần 2: Cài đặt Kubernetes Xây Dựng Cluster Và Build App Bằng File ...
Có thể bạn quan tâm
- Contact
- About
- Rules & Privacy
Header Ads Widget
Ticker
6/recent/ticker-posts HomeLinuxPhần 2: Cài đặt Kubernetes xây dựng Cluster và build App bằng file yaml cơ bản trên Ubuntu Phần 2: Cài đặt Kubernetes xây dựng Cluster và build App bằng file yaml cơ bản trên Ubuntu 10:50 Keywords: How to install kubernetes cluster and build app by file yaml bassic on ubuntuNhư hướng dẫn trước của mình, thì mình đã hướng dẫn xong cho các bạn cách cài đặt kubernetes với rancher rồi đúng không, với ai không thích sử dụng rancher mà lại muốn một kubernetes gốc thì có thể sử dụng cách làm tay trong phần 2 này
Các bạn có thể xem lại- Phần 1: Hướng dẫn cài và quản lý Kubernetes Cluster với Rancher version 2.3.8 trên Ubuntu
- Server 1: Docker và làm Node Master (Ram >= 3GB + CPU 4 + Disk 20GB)
- Server 2: Docker và làm Node Worker (Ram 1GB + CPU 1 + Disk 20GB)
- Server 3: Docker và làm Node Worker (Ram 1GB + CPU 1 + Disk 20GB)
Bước 2: Chuẩn bị một số phần cơ bản trước khi cài đặt KubernetesSẻ có rất nhiều vấn đề cần chuẩn bị vì thế mình sẻ nói ra từng vấn đề một cho các bạn giải quyết trước nha- Đặt tên lại cho các máy server để chúng ta dễ dàng phân biệt và nó sẻ sử dụng tên đó để xây dựng cho vùng Cluster, với mình thì mình đã đặt tên lần lượt cho tất cả các máy là như sau: k8s-master, k8s-node1, k8s-node2
- Thực hiện update và cài đặt một số gói hổ trợ
- Tắt tính năng swap trên OS cho 3 máy server bởi vì Kubernetes không sử dụng phân vùng swap, nếu có nó sẻ không cài đặt và báo lỗi nên vì vậy ta lần lượt thực hiện trên tất cả các máy bằng cách chạy lệnh sau

Các bạn cũng làm như thế với 2 máy còn lại là node1 và node2 rồi sau đó kiểm tra bằng cách gõ lệnh free -mNếu ngay chổ phân vùng Swap mà để 0 hết thì đã ok rồi đấy
- Bây giờ các bạn phải chắc cú 1 điều là 3 máy server hiện tại có Class IP trùng với nhau và có thể ping thấy nhau, để chắc cú hơn các bạn có thể add IP vào /etc/hosts để máy dễ dàng nhìn thấy nhau hơn qua IP và name bằng cách
Như bạn thấy trên hình thì 3 máy server của mình cùng class mạng 1 và mình đã khai báo cho toàn bộ y như vậy trong file hosts để nó dễ nhận diện lấy nhau dễ hơn chứ thật ra không có cũng ko mất gì mấy hihiBước 3: Thực hiện cài đặt một số thành phần cần thiết cho K8S (Mình sẻ gọi tắt như thế cho Kubernetes các bạn nhé)Cài đặt kubelet, kubeadm và kubectl cho tất cả các node server luôn nhé curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" sudo apt-get install kubeadm kubelet kubectl sudo apt-mark hold kubeadm kubelet kubectl

Trong đó:- kubeadm: Được sử dụng để có thể thiết lập cụm cluster cho k8s
- kubelet: Thành phần chạy trên các host, có nhiệm vụ kích hoạt pods và container cho cụm cluster
- kubectl: Công cụ cung cấp cli (Giao diện dòng lệnh) để thực thi lệnh k8s
- --apiserver-advertise-address: Chính là nơi để yêu cầu địa chỉ IP của máy k8s-master của mình kiểu dạng như trên thì nó tự tìm đến địa chỉ IP của máy master luôn nhưng nếu như máy bạn nhiều card mạng quá thì các bạn có thể thêm lệnh này để khai báo địa chỉ IP mà bạn muốn thằng k8s-master sử dụng
- --pod-network-cidr: Đây là đỉa chỉ mạng phụ thuộc mà công nghệ network kết hợp với k8s, trong hướng dẫn lần này của chúng ta đang sử dụng flannet để connect với tất cả các node mà thằng flannet này sử dụng dãi IP: 10.244.0.0/16
Nếu như các bạn thấy được giống hình sau nghĩa là các bạn đã thành công rồi đấy
Như hình trên các bạn cần chú ý những cái nó yêu cầu sau, thực hiện chạy những lệnh sau ở Node Master
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf echo "source <(kubectl completion bash)" >> ~/.bashrcMình đã thêm 2 câu lệnh vào để nó hoàn hiện hơn đó là lệnh tự hoàn thiện command khi nhấn tab và lệnh export config, cũng cần chú ý 1 câu lệnh nữa nhưng câu lệnh này sẻ không chạy trên Node Master đâu nhé, mà sẻ chạy trên các Node Worker để thực hiện Join vào Cluster
Nhưng hiện tại các bạn chưa đụng chạm gì tới lệnh này cả, cứ chú ý nó và save nó vào trong file note nào đó đi để lát chúng ta sẻ lấy ra sử dụngBước 5: Cài đặt Pod NetworkTại node-master chúng ta thực hiện lệnh sau để có thể xây dựng deploy pod network cho cluster sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlBạn có thể kiểm tra mọi thứ bằng lệnh sau kubectl get pods --all-namespaces
Bước 6: Thực hiện tham gia cluster cho k8s-node1 và k8s-node2Bạn còn nhớ cái câu lệnh mà mình yêu cầu bạn save lại khi nảy không, bây giờ là lúc bạn lấy nó ra sử dụng rồi đấy, chạy câu lệnh đó vào node1 và node2, đừng copy theo y chang của mình vì mõi k8s cluster nó sẻ tạo ra 1 cái token riêng biệt, nên vì vậy câu lệnh của các bạn có thể hơi giống mình nhưng lại khác phần token đấy kubeadm join 10.0.1.160:6443 --token 0sd1ae.f82txdwr6hjo2cxx --discovery-token-ca-cert-hash sha256:fada0831efaaa86566370c0c689c60866b75bd9546b5d6a0d8b05350251fbdb4Thực hiện xong con node1 rồi mới nhảy qua con node 2 nhé, nếu nó hiện thông báo vậy nghĩa là ok rồi đấy
Trên máy master chúng ta thực hiện chạy lệnh sau để xem nó đã kết nối ok chưa nhé kubectl get nodes
Như các bạn đã thấy mọi thứ đã Ready cả rồi đấy, nói thật bây giờ đa phần thì các bạn chỉ sử dụng con master thôi còn con worker sau khi tham gia vào master thì nó đã không còn giá trị lợi dụng so với chúng ta nữa vì con master sẻ ra lệnh cho bọn nó làm hết mọi vấn đề, nếu trong quá trình làm mà bạn thấy một node nào đó đang bị lỗi hoặc pending chỗ nào đó các bạn có thể sử dụng lệnh sau để check và kiểm tra nó nhé kubectl describe pod kube-scheduler-k8s-master --namespace=kube-systemGiả sử ở trên mình check thử node master, nhưng hiện tại node master của mình vẫn ổn hehe
Ok như vậy là mình đã hướng dẫn xong cho các bạn cách cài đặt thằng kubernetes hoàn chỉnh bằng tay rồi đấy, mình sẻ hướng dẫn các bạn tiếp tục xây dựng một số ứng dụng cơ bản để các bạn có thể thực thi k8s với kubectl bằng dòng lệnh, nhưng có 2 cách chạy thử ứng dụng đó là các bạn chạy từng dòng lệnh 1 và cách 2 sẻ là sử dụng file yaml để build 1 ứng dụng chỉ bằng 1 command, ok không dài dòng nữa chúng ta sẻ thực hiện cách 1 trướcCách 1: Cài đặt web nginx trên k8s cơ bản bằng lệnh
Như ở trên mình chạy thử các dòng lệnh cho các bạn thấy thì hiện tại pods, services, deployments vẫn chưa có 1 bất kì gì khác lạ cả, chỉ có mõi dãi IP Cluster hồi nảy mình tạo trong phần services thôi, thực hiện chạy 2 câu lệnh sau để deploy nginx và phân chia nginx cho 2 node làm việc, bây giờ chỉ làm việc trên máy master thôi nên các bạn cứ mở máy master lên mà chạy lệnh thôi, 2 thằng kia hết giá trị lợi dụng rồi kaka kubectl create deployment k8s-nginx --image=nginx
Sau khi chạy lệnh trên, mình sẻ kiểm tra lại tất cả cho các bạn thấy 1 lần nữa nhé
Như các bạn thấy pods của mình đã tạo ra 1 pods nginx, giá trị deployments cũng ready 1/1 nghĩa là mọi thứ đã ổn, nhưng nếu mình muốn tạo thêm 1 pods nginx nữa để khi con pods này chết thì vẫn còn con khác hoặc tự restore trở lại hoặc giải quyết vấn đề loadbalancer thì sao ? ok chạy tiếp lệnh sau nhé kubectl scale deployment k8s-nginx --replicas=2Thực hiện kiểm tra lại lần nữa coi mọi thứ thế nào nhé
Bây giờ Pods của chúng ta đã tăng lênh 2, deployments do lúc đầu nó chưa running xong mà mình bấm nên nó vẫn để 1/2 nhưng khi mình chạy lại lệnh 1 lần nữa thì đã 2/2 rồi đồng nghĩa pods cũng đã lên luôn rồi, ok vẫn ổn, mình sẻ thử delete 1 pods và get lại pods đó cho các bạn xem nhé
Như bạn đã thấy ở trên khi mình delete 1 pod bất kì thì nó sẻ tự động tạo ra 1 pod khác hoàn toàn vì vậy việc chết server là khá khó, trừ khi bạn delete deployments và service thì may ra nó mới chịu dừng lại, ok quá trình test về pod này kia đã xong web nginx thì ok rồi nhưng nó vẫn chưa xong vì mình chưa tạo services cho nó chạy mà thực hiện tạo bằng lệnh sau kubectl expose deploy k8s-nginx --port 80 --target-port 80 --type NodePortSau khi các bạn chạy lệnh trên thì giờ đây bạn có thể truy cập vào trang web nginx rồi đấy, lúc này 1 services trong k8s đã được tạo ra
Ok, thực hiện truy cập trên máy ngoài hoàn toàn luôn nghĩa là các máy khác với những máy node trong dãy mạng lan với máy master muốn truy cập được thì phải thông qua 1 port khác port 80 do đó mình đã thêm --type là NodePort có nghĩa là một port ngẫu nhiên nào đó, nó sẻ tự tạo ra giúp mình, như hình trên bạn đã thấy nó đã tạo ra port 30623 để ta có thể truy cập từ ngoài vào

Ok bây giờ bạn có thể truy cập nginx từ 3 máy node với port 30623 rồi đấy, chúng ta chuyển đến phần build bằng file yaml cơ bản nhé, bây giờ bạn thực hiện xóa đi service và phần deploy của k8s nảy mình đã tạo đi bằng các câu lệnh sau kubectl delete service k8s-nginx kubectl delete deployments k8s-nginxCách 2: Xây dựng app cơ bản trên k8s bằng file yaml
Sau khi xóa chúng đi ta cũng không thể nào truy cập được nginx nữa, bây giờ ta phải xây dựng lại nginx app bằng file yaml chứ không làm bằng lệnh tay như trên nữa

Coi như là đã kết thúc phần quản lý ứng dụng cơ bản với k8s cluster rồi đấy bây giờ tạo file yaml nào vi nginx-app.yamlVới nội dung sau: apiVersion: v1 kind: Service metadata: name: k8s-nginx labels: app: nginx spec: type: NodePort ports: - port: 80 selector: app: nginx --- apiVersion: apps/v1 kind: Deployment metadata: name: k8s-nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80Hoặc các bạn có thể sử dụng lệnh sau để lấy file về máy, sau đó sửa lại như ở trên giống mình các bạn nhé wget https://k8s.io/examples/application/nginx-app.yamlSau đó thực hiện lệnh sau để deploy chúng lên kubectl create -f nginx-app.yaml
Ok như vậy đã thành công rồi đấy, sau khi tạo xong thì giờ đây Port hiện tại của chúng ta sẻ là 30033 các bạn thử truy cập vào nhé
Ngon lành cành sung liền, như vậy mình đã hướng dẫn các bạn xong các bước cơ bản với k8s rồi, cũng khá thú vị đúng không, việc tìm hiểu cấu trúc file khi bạn đã hiểu được phần chạy tay cơ bản thì mình tin chắc rằng file yaml các bạn nhìn vào là hiểu liền, chúc các bạn thành công, nếu bài viết của mình có ích thì giúp mình DONATE ở phía dưới trang web nhé để mình có thêm động lực viết những bài viết tốt hơn nhé. Cảm ơn các bạn rất nhiều !Nguồn: itblognote.com Tags: Container Linux
Posted by: Yuki Thành Phát (thanhphatit)
You may like these posts
Post a Comment
0 Comments
Vài lời muốn nói:* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.
Translate
Social Plugin
About Blog
Xin chào các bạn, mình là Phát hiện tại mình là một DevOps Engineer và mình xây dựng Blog này với tiêu chí đúng với cái tên "ITBLOGNOTE.COM" của nó, là nơi mà mình sẻ lưu trữ lại những kiến thức mà bản thân đã tích lũy được trong đó 80% bài viết về IT | System Admin | DevOps | Security | System Programming và 20% bài viết về những điều hay trong cuộc sống lẫn các kiến thức khác để chia sẻ cùng các bạn, đây cũng như là kho lưu trữ Note Public tổng hợp của cá nhân mình, với phương châm: "Nâng cao kiến thức bản thân bằng cách chia sẻ, nhận đóng góp từ mọi người!"
Fanpage
Labels
- Container 7
- DevOps 31
- KaliLinux 6
- Linux 102
- TricksHacking 22
- TricksLinux 48
- TricksOther 55
- TricksWindows 49
My Music
Info
- INFO
- TOOLS
Random Posts
3/random/post-listRecent in Linux
3/Linux/post-listPopular Posts
Hướng dẫn sử dụng Nmap để Scan Port trên Kali Linux
11:19
Báo cáo đồ án nghiên cứu các giải thuật tìm kiếm Heuristic
00:24
Phần mềm NSSM tạo services cho Windows
21:58
Menu Footer Widget
- Home
- Contact
- About
- Rules & Privacy
Từ khóa » Cài đặt K8s
-
Cài đặt Và Cấu Hình Kubectl | Kubernetes
-
Giới Thiệu Và Cài đặt Kubernetes Cluster
-
Phần 3: Hướng Dẫn Cài đặt Kubernetes - Viblo
-
Kubernetes – Phần 3 – Cài đặt Kubernetes - HỌC CHỦ ĐỘNG
-
Cài đặt Kubernetes Cluster Với Kubeadm - Technology Diver
-
Bài 01. Cài đặt Kubernetes Cluster
-
Kubernetes Là Gì? Cài đặt Kubernetes Trên Ubuntu Server
-
Hướng Dẫn Cài đặt Cluster Kubernetes Với RKE Trên CentOS 7
-
Hướng Dẫn Cài đặt Kubernetes Trên CentOS 7 Tự động Hoá Với Ansible
-
Cài đặt Kubernetes Cluster Image Cài đặt Kubernetes ...
-
K01 - Giới Thiệu Và Cài đặt Kubernetes Cluster - YouTube
-
[#Kubernetes] Hướng Dẫn Cài Đặt Kubernetes Cluster Chi Tiết
-
Cài đặt K8s Cluster Trên Ubuntu 16.04 Sử Dụng Công Cụ Kubeadm
-
Cách Cài đặt Kubernetes Cluster Trên CentOS 7 đơn Giản Nhất