本文通過kubernetes部署tomcat集群,來學習和掌握kubernetes的一些入門基本操作
前提條件
1.各個節點處于Ready狀態;
2.配置好docker鏡像庫(否則會出現ImagePullBackOff等一些問題);
3.網絡配置正常(否則即使應用發布沒問題,瀏覽器訪問不了)。
實現的過程
一.編寫一個tomcat發布的yaml文件tomcat-9.0-deployment.yaml,內容類似下面這樣的:
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: tomcat9name: tomcat9
spec:replicas: 3 #指定集群的節點個數selector:matchLabels:app: tomcat9template:metadata:labels:app: tomcat9spec:containers:- image: tomcat:9.0.85-jre8name: tomcat# 啟動時自動復制 webapps.dist 內容到 webappslifecycle:postStart:exec:command: ["/bin/sh", "-c", "cp -r /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps/"]ports:- containerPort: 8080
--- # 使用三個短橫線分隔不同的配置,一個yaml文件可以配置多個
apiVersion: v1
kind: Service
metadata:labels:app: tomcat9name: tomcat9
spec:ports:- port: 80protocol: TCPtargetPort: 8080nodePort: 30080 # 指定易記端口,對外訪問端口selector:app: tomcat9type: NodePortexternalTrafficPolicy: Cluster
二.使用yaml文件部署tomcat集群
kubectl apply -f ./tomcat-9.0-deployment.yaml
?執行后輸出:deployment和service created的信息
三.驗證應用的發布
使用下面的命令,查看所有資源情況
kubectl get all?
?
從上圖可以看到,3個tomcat節點都處于運行狀態,對外訪問端口是30080。
然后使用瀏覽器訪問,出現tomcat的歡迎頁面,注意這里的IP不是CLUSTER-IP,而是前面文章配置時獲得的ip。可使用這個命令查看啟動是否正常,是否可訪問:
[root@k8s-node1 k8s]# kubectl exec -it tomcat9-f4d6f4687-7vwch -- curl -I localhost:8080
HTTP/1.1 200?
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Sat, 03 May 2025 08:06:38 GMT
返回200則表示正常。
如果不知道yaml文件怎么寫,可以嘗試在命令后面添加--dry-run,這樣就會輸出示例yaml文件
例如:
kubectl create deployment tomcat9 --image=tomcat:9 --dry-run -o yaml > tomcat9-deployment.yaml
就會在當前目錄下輸出一個tomcat9-deployment.yaml文件從而獲得app的配置信息,但并不會創建一個發布,同樣kubectl expose deployment tomcat9 --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml則在當前目錄下輸出service配置的內容,然后把service配置的內容添加到前面的tomcat9-deployment.yaml(使用---分隔開來),然后以最終的tomcat9-deployment.yaml來發布應用。
拓展:常用命令?
1.獲取所有的命名空間
kubectl get ns
2.獲取所有命名空間的節點信息,用戶創建的發布均位于default空間下:
kubectl get pods --all-namespaces
3.獲得默認命名空間的節點基本信息
kubectl get pods
3.獲得默認命名空間的節點詳細信息
kubectl get pods??-o wide
4.獲取所有資源信息
kubectl get all
5.獲取所有的節點信息
kubectl get nodes
6.獲取所有的服務信息
kubectl get svc
7.使用指定文件創建發布
kubectl apply -f xxx.yaml
8.刪除發布的應用
kubectl delete deployment.apps/應用名
9.向外暴露端口
kubectl expose deployment 應用名(比如tomcat9) --port=80 --target-port=8080 --type=NodePort
10.將應用擴容到指定數目的數量
kubectl scale --replicas=3 deployment 應用名
11.進入應用內部
kubectl exec -it pod/應用名稱 -- /bin/bash
12.獲得服務的詳細信息
kubectl describe service tomcat9