k8s部署Java專案實戰
阿新 • • 發佈:2021-06-10
準備
事先準備好k8s叢集,打包你的專案並上傳到docker倉庫
yaml檔案
k8s的yaml檔案可以自己手動寫(不推薦),也可以通過kubectl create生成,這裡不多說了,網上相關的文章多的是。。。下面是我的yaml檔案。
test-deployment.yaml
--- apiVersion: apps/v1 kind: Deployment metadata: name: test-k8s namespace: default labels: cloud-service-module: test app: test-k8s spec: replicas: 3 selector: matchLabels: cloud-service-module: test app: test-k8s template: metadata: labels: app: test-k8s cloud-service-module: test spec: restartPolicy: Always containers: - name: test-k8s image: "test-k8s" # 這裡填你自己專案的映象地址 imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: test-k8s-configmap ports: - name: tomcat containerPort: 8080 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 5 periodSeconds: 10
test-configmap.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: test-configmap
data:
# 我這裡寫的是專案所需要的環境變數
test_ip: 172.20.151.111
test_port: "5555" # 注意這裡的value如果是數字需要加上雙引號,否則會報錯
test-service.yaml
apiVersion: v1 kind: Service metadata: name: test-service namespace: default labels: cloud-service-module: test cloud-service-type: java cloud-service-category: backend spec: type: ClusterIP ports: - name: tomcat port: 8080 targetPort: 8080
部署
登陸docker倉庫
在你的k8s叢集上需要先登入專案映象所在的倉庫,如果不執行該操作,建立pod的時候映象會拉取失敗!!
docker login --username=xxx [你的倉庫地址]
看到下圖就是登陸成功
注意,登入docker倉庫可能會出現如下問題
Error response from daemon: Get https://xxx: dial tcp xxx:443: connect: connection refused
解決方案
vi /usr/lib/systemd/system/docker.service #新增--insecure-registry=mysql.gift ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=mysql.gift #執行命令 systemctl daemon-reload systemctl restart docker #檢視是否成功 ps -ef|grep docker [root@k8s-node1 ~]# ps -ef|grep docker root 7730 1 0 09:26 ? 00:00:20 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=xxx
重新登入docker倉庫問題解決
建立pod
分別執行命令:
kubectl apply -f test-service.yaml
kubectl apply -f test-configmap.yaml
kubectl apply -f test-deployment.yaml
最後通過kubectl get pod,svc
命令驗證是否部署成功
至此,我們的Java專案就部署成功了!