K8S发布JAVA项目
# k8s发布java项目
https://www.kubernetes.org.cn/deployment
# deployment
vim demoapp-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demoapp-deploy
spec:
replicas: 2
selector:
matchLabels:
app: demoapp
template:
metadata:
labels:
app: demoapp
spec:
containers:
- name: demoapp
image: 192.168.0.180:5000/yds/demoyds:latest
ports:
- containerPort: 8080
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
kubectl apply -f demoapp-deploy.yaml
查看pod的网络节点分布情况
kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES demoapp-deploy-5c9bb97649-jcdlq 1/1 Running 0 4m8s 10.244.2.210 node2 <none> <none> demoapp-deploy-5c9bb97649-shm9t 1/1 Running 0 4m8s 10.244.1.197 node1 <none> <none>
1
2
3curl 10.244.2.210:8080/demo-api/hi {"code":"0","msg":"ok","data":"hey,guys!"}
1
2
# service
vim demoapp-service.yaml
apiVersion: v1
kind: Service
metadata:
name: demoapp-svc
namespace: default
spec:
selector:
app: demoapp
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30010
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
kubectl apply -f demoapp-service.yaml
查看service
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE demoapp-svc NodePort 10.1.232.249 <none> 8080:30010/TCP 5s
1
2此时网络已经对外开放了30010端口,映射到pod中8080的端口,所以外网可以访问。
# 卸载
kubectl delete -f demoapp-service.yaml
# pv & pvc
安装nfs
yum install -y nfs-utils
1目录
mkdir /home/nfs/data -pv
1nfs配置
vim /etc/exports
1/home/nfs/data *(rw,sync,no_root_squash)
1开机启动
systemctl enable rpcbind.service systemctl enable nfs-server.service
1
2启动
systemctl start rpcbind.service & systemctl start nfs-server.service
1安装pvc
vim demoapp-pvc.yaml
1apiVersion: v1 kind: PersistentVolume metadata: name: demoapp-pv labels: name: demoapp-pv spec: nfs: path: /home/nfs/data server: node0 ## 节点名,这里用的是master1,和hosts文件中是一致的 accessModes: ["ReadWriteMany","ReadWriteOnce"] capacity: storage: 1Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: demoapp-pvc namespace: default spec: accessModes: ["ReadWriteMany","ReadWriteOnce"] resources: requests: storage: 1Gi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26kubectl apply -f demoapp-pvc.yaml
1修改deployment
apiVersion: apps/v1 kind: Deployment metadata: name: demoapp-deploy spec: replicas: 3 selector: matchLabels: app: demoapp template: metadata: labels: app: demoapp spec: volumes: ## 加入volumes的定义,下文volumeMounts会引用 - name: log persistentVolumeClaim: claimName: demoapp-pvc containers: - name: demoapp image: 192.168.0.180:5000/yds/demoyds:latest volumeMounts: - name: log ## 引用volumes mountPath: /data/app/log ## 将容器中日志的路径映射到pvc的路径中 ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: demoapp-svc namespace: default spec: selector: app: demoapp type: NodePort ports: - port: 8080 targetPort: 8080 nodePort: 30010
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40启动成功后,pvc指定的路径
/home/nfs/data
中会输出容器的日志
# helm发布java
创建模板
helm create [charName]
1
示例
helm create demo-app-char
1
template目录下不用的东西删除掉,只留deploy.yaml,service.yaml,_help
修改value.yaml
image.repository: 镜像名
image.tag: "latest"
service.type: NodePort
service.port: 端口号
nodePort: 30083
serviceAccount.create: false
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
修改template/service.yaml
spec.ports.nodePort: {{ .Values.service.nodePort }}
1
修改template/deploy.yaml
containerPort: 8080 ## 容器的端口号
## 这三个节点删除
livenessProbe:
readinessProbe:
serviceAccountName:
1
2
3
4
5
6
2
3
4
5
6
# 代码
.drone.yaml
## 使用helm3的方式启动容器..
- name: deploy-by-helm3-main
pull: if-not-exists
image: pelotech/drone-helm3
settings:
helm_command: upgrade
chart: ./spring-boot-chart
release: spring-boot-release
namespace: myapp-main
## 增加分支,记得先去服务器建个目录 mkdir /home/nfs/data/myapp-main -pv
## --set mage.nodePort=30010
values: image.repository=192.168.0.180:5000/yds/demoyds,image.nodePort=30010,volumePath=/home/nfs/data/myapp-main,replicaCount=2
kube_api_server: https://192.168.0.180:6443
kube_token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImE3QUhLQ2NyT0VIdGZ4UW5kMEc1UVZtVW9zODNwR3BsczRhdWdmZVdtV1kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tN2Y0ODYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMWUwZTg4MTEtZmI1NC00YTA4LWI4ZjAtOWExNTYwNmJjZGE4Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.e52gYNdop1b2bodFTxSzod18kRlMd3kIrCnKEfxwDGZH8mTdwx_CfBkfh1zu1ADf-MkDSizYoDDi6PEu2qKdq2P3Zr4Dh4BLTFVGftOq-iX5dJhzKDgqOl_Ic6DgdA4uH9yDkolYQIBOVHpVBQaHcb5Tjdy3S4JwydYvU3afdzlwwTUyCF8nGWpeaVzTHSJILJ1ZXm1IxFzL2xbDVYxlF_NsdxexvwdEh9HFLVL5OMd7QItq3K3Jsoh0eM_n4rEedcp8ZFVZdGLPQnCj1Jmuxxh5kirv1mISEsM2wHa0IwnlbQBt7Ijqbt8pza43dGcRyT8At2o7Ko5RdoPL6nDOuw
kube_certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1EY3lOakE0TVRVMU5Wb1hEVE14TURjeU5EQTRNVFUxTlZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTEdaCmdVYnJiKy9xTU1sU0VyajlpWWN2REZiazNSckZ6ZGp4R1h4bVNzZFlhK211Y1B6d2hTNHhNaURISnJKaFVqbEcKL3ppUWpCdE9TemJtUFNEVWxJa0ZySkdzNE5OTkVlNXNHZlhDa3BBa3R6bGhBQ0hEbXlQemoxUmxpMnZrUjBTcgpTNkRFdThyQlNlbmJaZTVLWjFhRHJET2FPS3ZrYjVKUVdpMjZka2hKZ2xyRWRrSnJHTWswY24vZ3QrQjJNdlM0ClJ6ZGdLMEZKOHRGN3dnd3pjT0pyYmpvSVNScHh4OWo5SHV1MzM5RHMwK1BLT3J0dVozOEcrSGZCdCtwSmRKT3UKRWdMM2RtUTE0MWdhNS9WK3I4T2xadzBaL2ZrblZpbUsydFRPOXYrUGNvSnIvODR4a0lsN0E1Tk00LzVnUWFMcgpqQ01LeTR1YXJFNnlaRDVuczRzQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFEb1I4dHFNK0MrdTBRVTBaREZTQnFQR3JaV0gKTTZ0SDJkKzFXbDljbVlmNEZ5WXphM3AxSnJqbmZNLzFuSnZGaXEvOG1VdjB2YXViY2RnOTVUanZpR0VKN1BxTQo1bVFBOEprbnAxcE9VU0NMVGh1QWk0M1EvbkpzZGFzQ3V6RzVaUlp4cGdJYVRhTEtKWUZKL3VDczZlaXhFTDQxClYrQWZtRThaWXlJajBFbHVlVU53UFh2cnNxd3R1QU9FUVRjTzM2YmdzL05VK0dvbzRqNzB4NS92aUlsY3pXajQKTXBSK0lkbzVZZStKTk54WU55L3MyczYrTGpERDJKTm9nTnNtRVhiS0NRQzhQSVppbFlteStKOC9FQ3l1UzlBbgpuQlRjMDNKVWZPMFhJR1ptNi9nM0NKSWxDeWpIZUNLeDVRWkNMdlkzWTVVVkF5REdaZFpSRUNkemJ6QT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
kube_service_account: dashboard-admin
when:
branch:
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
上次更新: 2024/08/08, 06:59:58