kubeadm搭建kubernetes集群之三:加入node節點


在上一章kubeadm搭建kubernetes集群之二:創建master節點的實戰中,我們把kubernetes的master節點搭建好了,本章我們將加入node節點,使得整個環境可以部署應用;

前提條件

由於要用到谷歌的服務,所以要求您的網絡環境可以科學上網,具體的方案就不在這里說了;

復制文件

如下圖所示,cent7是我們上一章操作完成后對應的CentOS7的VMware文件夾,node1、node2都是直接復制cent7文件夾再粘貼生成的;

這里寫圖片描述

啟動

請參照kubeadm搭建kubernetes集群之二:創建master節點中的操作,用VMware將node1文件夾中的虛擬機文件打開,再改名為node1,然后啟動虛擬機;

修改hostname再重啟node1

等node1啟動完畢,進入系統,修改/etc/hostname文件,這里面只有一行內容“localhost.localdomain”,改成”node1”,保存后重啟node1;

設置kubelet服務自啟動

執行以下命令設置kubelet自啟動:

systemctl enable kubelet

以node身份加入kubernetes集群

在上一章kubeadm搭建kubernetes集群之二:創建master節點的實戰中,我們初始化master完成后控制台輸出了以下信息:

kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443

如果您不記得上述信息了也沒關系,在master上執行命令kubeadm token list,就能看到token參數了,如下圖所示:

這里寫圖片描述

現在我們要將當前的node1加入到master所在的kubernetes集群中,在node1的控制台輸入kubeadm join –token=4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443,(注意,這里的參數是–token=,不是控制台提示的-token )控制台顯示信息如下:

這里寫圖片描述

如上圖所示,提示連接失敗了,在master和node1上依次執行以下命令,把防火牆全部關閉調:

systemctl stop firewalld;systemctl disable firewalld;setenforce 0

再試一次,在node1的控制台輸入kubeadm join –token=4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443,控制台顯示信息如下:

這里寫圖片描述

如上圖所示,控制台的輸出信息提示當前node已經加入到集群中了;

注意kubeadm join命令的格式

在上一章kubeadm搭建kubernetes集群之二:創建master節點中,執行完master的init操作后,控制台輸出的node加入的提示信息如下:

kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443

此時如果執行上述命令,有可能會提示下面這個錯誤(我用這個命令的時候,結果node1加入成功,但是node2加入失敗了,報錯信息就是下面的):

[root@node1 ~]# kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 17.05.0-ce. Max validated version: 1.12
[preflight] WARNING: hostname "node1" could not be reached
[preflight] WARNING: hostname "node1" lookup node1 on 192.168.119.2:53: no such host
[validation] WARNING: kubeadm doesn't fully support multiple API Servers yet
[discovery: Invalid value: "": DiscoveryToken or DiscoveryFile must be set, discovery: Invalid value: "": token [""] was not of form ["^([a-z0-9]{6})\\.([a-z0-9]{16})$"], discovery: Invalid value: "": token must be of form '[a-z0-9]{6}.[a-z0-9]{16}', discovery: Invalid value: "–token": address –token: missing port in address, discovery: Invalid value: "4fccd2.b0e0f8918bd95d3e": address 4fccd2.b0e0f8918bd95d3e: missing port in address]

發生這個問題的時候,執行下面的命令就可以成功了:

kubeadm join --token=4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443

檢查node1狀態

在master的控制台上,執行以下命令查看所有節點的狀態:

kubectl get node

得到的列表信息如下圖所示,node1節點的狀態是”NotReady”:

這里寫圖片描述

這是因為node1節點的docker正在拉取鏡像導致的,等待大約十分鍾,再次執行kubectl get node看到的狀態如下圖,node1的狀態已經正常了:

這里寫圖片描述

在node1的控制台上執行命令docker images,可以看到已經pull了一些鏡像到本地,如下圖:

這里寫圖片描述

加入node2,node3

重復上面的步驟,將node2和node3也加入進來,加入后狀態如下圖:

這里寫圖片描述

部署服務

在master節點上執行以下命令,可以創建了一個名字為tomcat的deploy:

kubectl run tomcat001 --image=tomcat:7.0.82-jre7 --replicas=2 --port=8080

這樣就創建了有兩個副本的tomcat容器,執行kubectl get pod -o wide,看到下圖所示:

這里寫圖片描述

如上圖,兩個pod分別被分配到了node2和node3上面,此時的狀態是ContainerCreating,下載tomcat鏡像是要時間的,所以耐心等待幾分鍾,再一次執行kubectl get pod -o wide,看到下圖所示:

這里寫圖片描述

如上圖所示,狀態已經變成了Running,並且每個pod都有了內部ip;

我們能看到tomcat001-1395295392-fg1qd這個pod在kubernetes內部環境中的ip是192.168.104.1; 
在node2上執行ip addr,我們看到的所有網卡和ip如下所示:

這里寫圖片描述

如上圖紅框所示,node2機器的ip也在pod的所在的192.168.104.xxx網段,所以node2是可以直接訪問pod上的tomcat服務的,我們在node2系統中打開CentOS自帶的firefox瀏覽器,輸入192.168.104.1:8080,是可以成功訪問到tomcat的;

在外網訪問

在node2上通過pod的地址訪問,能證明pod已經正常運行了,但是來自kubernetes環境之外的請求如何才能到達pod上呢?這就需要通過service的方式將deploy的端口暴露出去,執行以下命令創建基於現有deploy的service:

kubectl expose deploy tomcat001 --type=NodePort --target-port=8080

執行了上述命令,就把tocamt001的8080端口和node2、node3的端口做了綁定,綁定關系可以通過如下命令查看:

kubectl get svc tomcat001 

得到信息如下圖:

這里寫圖片描述

上圖紅框中的8080:32425表示將tomcat001服務的8080端口和node2、node3的32425端口建立了映射關系;

node2的ip是192.168.119.143,因此在windows上打開瀏覽器,輸入 
http://192.168.119.143:32425,即可訪問到kubernetes集群中的tomcat服務,如下圖所示:

這里寫圖片描述

至此,整個kubeadm搭建kubernetes集群的實戰就結束了,希望能對您在部署和體驗kubernetes集群的時候提供有用的參考;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM