1.環境準備
安裝jdk1.8
安裝maven
2.部署java應用
首先下載下傳demo:https://github.com/lizhenliang/tomcat-java-demo
解壓
unzip tomcat-java-demo-master.zip
将資料庫腳本導入資料庫:/root/tomcat-java-demo-master/db/tables_ly_tomcat.sql
修改配置檔案application.yml
vim /root/tomcat-java-demo-master/src/main/resources/application.yml
打包(打包的時間可能會有點長奧)
cd tomcat-java-demo-master
mvn clean package -Dmaven.test.skip=true
打包完成後會生成target目錄
建構項目鏡像
cd tomcat-java-demo-master
docker build -t 10.2.3.90/test/java-demo .
将鏡像推送到本地的私有倉庫
docker login 10.2.3.90
docker push 10.2.3.90/test/java-demo:latest
将鏡像部署到k8s中
由于通路的是私有倉庫,需要生成密鑰secret(此步驟非常關鍵)
kubectl create secret docker-registry regsecret --docker-server=10.2.3.90 --docker-username=admin --docker-password=123456
其中:
regsecret: 指定密鑰的鍵名稱, 可自行定義
--docker-server: 指定docker倉庫位址
--docker-username: 指定docker倉庫賬号
--docker-password: 指定docker倉庫密碼
--docker-email: 指定郵件位址(選填)
在master、node1、node2分别添加私服位址
vim /etc/docker/daemon.json
{
"insecure-registries": [
"10.2.3.90"
]
}
service docker restart
生成一個模闆
kubectl create deployment java-demo --image=10.2.3.90/test/java-demo:latest --dry-run -o yaml >deploy.yaml
生成的模闆格式如下:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: java-demo
name: java-demo
spec:
replicas: 1
selector:
matchLabels:
app: java-demo
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: java-demo
spec:
containers:
- image: 10.2.3.90/test/java-demo:latest
name: java-demo
resources: {}
status: {}
修改後的deploy.yaml檔案如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: java-demo
name: java-demo
spec:
replicas: 3
selector:
matchLabels:
app: java-demo
template:
metadata:
labels:
app: java-demo
spec:
containers:
- image: 10.2.3.90/test/java-demo:latest
name: java-demo
imagePullSecrets: # 擷取鏡像需要的使用者名密碼
- name: regsecret
應用一下
kubectl apply -f deploy.yaml
檢視Pod
kubectl get pods
檢視應用是否已經啟動
kubectl logs java-demo-54bd9c78b9-9c88k
如果需要更新鏡像的話可以使用以下指令(隻有出現不是running的時候才使用)
kubectl delete pod 鏡像的名字
通過service可以讓使用者也可以通路應用
kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort -o yaml --dry-run >svc.yaml
生成的模闆資訊如下:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: java-demo
name: java-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: java-demo
type: NodePort
status:
loadBalancer: {}
應用一下
kubectl apply -f svc.yaml
檢視pod和service
kubectl get pods,svc
檢視pod部署的節點
kubectl get pods -o wide
http://10.2.3.192:30667/