天天看點

k8s部署Java項目實戰

準備

事先準備好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 [你的倉庫位址]
           

看到下圖就是登陸成功

k8s部署Java項目實戰

注意,登入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

[[email protected] ~]# 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

指令驗證是否部署成功

k8s部署Java項目實戰

至此,我們的Java項目就部署成功了!

參考文章:https://blog.csdn.net/java_w/article/details/103677896