1. 編寫配置文件yaml
-
編寫configmap配置文件
[root@k8s-master java-demo]# vim configmap.yaml [root@k8s-master java-demo]# cat configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: java-demo-config # 應用卷的名字 data: application.yml: | server: port: 8080 spring: datasource: url: jdbc:mysql://121.4.77.138:3306/java_demo?characterEncoding=utf-8 username: java_demo password: Aa@9953013 driver-class-name: com.mysql.jdbc.Driver freemarker: allow-request-override: false cache: true check-template-location: true charset: UTF-8 content-type: text/html; charset=utf-8 expose-request-attributes: false expose-session-attributes: false expose-spring-macro-helpers: false suffix: .ftl template-loader-path: - classpath:/templates/
-
應用配置文件
[root@k8s-master java-demo]# kubectl apply -f configmap.yaml configmap/java-demo-config created
2. 把configmap里的配置文件,放到應用程序里面
-
編寫應用配置文件yaml
[root@k8s-master java-demo]# vim java_demo.yaml [root@k8s-master java-demo]# cat java_demo.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: java-demo namespace: default labels: app: java-demo annotations: # 記錄回滾參數 kubernetes.io/change-cause: "java-demo:v1" #記錄到revision中的內容,記錄版本號 spec: replicas: 3 # Pod副本預期數量 revisionHistoryLimit: 10 # RS歷史版本保存數量 selector: matchLabels: app: java-demo strategy: rollingUpdate: maxSurge: 25% # 滾動更新過程最大pod副本數 maxUnavailable: 25% # 滾動更新過程中最大不可用pod副本數, type: RollingUpdate template: metadata: labels: app: java-demo # Pod副本的標簽 spec: imagePullSecrets: - name: harbor-auth containers: - name: java-demo image: harbor.scajy.org/scajy/java:v1 # 獲取容器 ports: - containerPort: 8080 resources: requests: # 啟動容器最小資源 memory: "256Mi" cpu: "500m" limits: # 容器的最大資源限制 memory: "512Mi" # 容器的最大資源內存限制128M cpu: "1000m" # 容器的最大資源cpu的核數限制,500m=0.5核數 readinessProbe: # 存活檢查,如果失敗,將殺死容器,來重啟 httpGet: port: 8080 path: / initialDelaySeconds: 20 #啟動容器后多少秒健康檢查 periodSeconds: 20 #以后間隔多少秒檢查一次 livenessProbe: # 就緒檢查,失敗就會剔除 service httpGet: port: 8080 path: / volumeMounts: - name: config # 指定共享卷的名稱 mountPath: "/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/application.yml" # 指定掛載目錄下 subPath: application.yml # 指定文件名稱 volumes: - name: config configMap: name: java-demo-config # 指定configmap的卷名 items: - key: "application.yml" # 指定的configmap的data里的保存的文件名 path: "application.yml" # 指定configmap的data文件
-
啟動配置文件
[root@k8s-master java-demo]# kubectl apply -f java_demo.yaml deployment.apps/java-demo configured
-
查看應用
[root@k8s-master java-demo]# kubectl get pods NAME READY STATUS RESTARTS AGE java-demo-747ff448bd-tg79z 1/1 Running 0 31m java-demo-747ff448bd-xcn26 1/1 Running 0 31m java-demo-758759777d-xtqfq 0/1 CrashLoopBackOff 11 24m nginx-6799fc88d8-bvg8q 1/1 Running 0 2d