如何用k8s部署Java项目
使用dockerFile部署jar包 推送至阿里云镜像仓库
(1)打需要部署项目的jar包
(2)创建Dockerfile文件(如下: Dockerfile文件 示例)
(3)构建镜像 docker build -t 仓库地址+版本号 . --platform linux/amd64
(4)修改镜像绑定远程仓库:docker tag 2733566c7b0a registry.cn-beijing.aliyuncs.com/agatha-dev/dev:1.0 (如图)
(5)推送镜像至远程仓库:docker push registry.cn-beijing.aliyuncs.com/agatha-dev/dev:1.0 (如图)
(6)指定配置文件并启动服务
kubectl apply -f car-deploy.yaml
Dockerfile文件 示例
## 基础镜像java FROM java:8 ## 作者 Oak MAINTAINER Oak ## 就是你上传的jar包的名称。给jar包起个别名 ADD project-spring_boot-1.0-SNAPSHOT.jar spring_boot.jar ## 就是在容器中以多少端口号运行 EXPOSE 8066 ## 容器启动之后执行的命令,java -jar spring_boot.jar 即启动jar ENTRYPOINT ["java","-jar","spring_boot.jar"]
k8s的网络请求
k8s的常用命令
kubectl get ingress -n prod kubectl get deployment -n prod kubectl get pod -n prod kubectl get service -n prod kubectl logs -f -n prod prodName-6cc4c54645-765g9 看日志 kubectl apply -f ~/Downloads/paas/007.yaml 更新配置文件
car.yaml 示例
apiVersion: apps/v1 kind: Deployment metadata: namespace: prod name: car-deployment labels: app: car spec: replicas: 5 selector: matchLabels: app: car template: metadata: labels: app: car spec: containers: - name: car image: registry.cn-beijing.aliyuncs.com/agatha-dev/dev:1.3 ports: - containerPort: 8066 # --- # apiVersion: v1 # kind: Service # metadata: # namespace: prod # name: car # spec: # selector: # app: car # ports: # - name: car # protocol: TCP # port: 8066 # targetPort: 8066 # --- # apiVersion: networking.k8s.io/v1 # kind: Ingress # metadata: # namespace: prod # name: ingress-car # spec: # rules: # - host: "k8s.agatha.pro" # http: # paths: # - pathType: Prefix # path: "/" # backend: # service: # name: car # port: # number: 8066
k8s的一些基础概念
(1)kubeadm(管理端)
(2)kubelet(服务端)
(3)kubectl(客户端)(创建和管理 Deployment(一根豆子),可以有很多Pod 容器组(一颗豆子),一个Pod可以部署1+个jar包;Service 类似ng)
负责 Kubernetes 主节点和工作节点之间通信的过程; 它管理 Pod 和机器上运行的容器,容器运行时(如 Docker)负责从仓库中提取容器镜像,解压缩容器以及运行应用程序。