java k8s-部署docker镜像

时间:2025-08-26 16:06:02来源:互联网

下面小编就为大家分享一篇java k8s-部署docker镜像,具有很好的参考价值,希望对大家有所帮助。

部署步骤

  • 编写dockerfile,制作镜像。
  • 使用控制器部署pod,部署时需要指定制作的镜像。常见控制器有deployment、statefulset、daemonset。
  • 把需要访问交互的应用端口暴露出来,方便数据交互。暴露方式有service、ingress。
  • 暴露出来后,客户端就可以正常访问运维了。

使用pod.yml创建pod

编写yml文件

apiVersion: v1
kind: Pod #指定资源类型,对于Pod,应该设置为Pod
metadata:
  name: my-pod #Pod的名称
  labels: #为Pod添加一个标签
    app: my-app
  annotations:
    description: "This is a sample Pod" #描述
spec:
  containers: #定义Pod中包含的容器
    - name: my-container #容器的名称
      image: nginx:latest #使用的容器镜像
      ports: #定义容器监听的端口和协议
        - containerPort: 80
          protocol: TCP
      resources:
        limits: #指定Pod使用的资源的最大限制,如CPU和内存
          cpu: "0.5"
          memory: "512Mi"
        requests: #指定Pod最低要求的资源,如CPU和内存
          cpu: "0.25"
          memory: "256Mi"

使用create命令或apply命令来创建pod

kubectl create -f pod.yaml

使用deployment创建pod

部署步骤

编写yml文件

apiVersion: apps/v1 #指定 Kubernetes API 的版本。对于 Deployment,通常使用 apps/v1
kind: Deployment #指定资源类型,对于 Deployment,应该设置为 Deployment
metadata:
  name: my-java-app  # Deployment 的名称
spec:
  replicas: 3  # 副本数,即要创建的 Pod 的数量
  selector:
    matchLabels:
      app: my-java-app  # 用于选择要管理的 Pod 的标签
  template:
    metadata:
      labels:
        app: my-java-app  # Pod 的标签
    spec:
      containers:
      - name: my-java-app  # 容器的名称
        image: my-java-app  # 容器的镜像
        ports:
        - containerPort: 8080  # 容器监听的端口号

上面的image属性没有指定镜像仓库的地址,默认是从Docker Hub拉取镜像,如果如果你的镜像存储在Google Container Registry,你可以这样指定镜像:

image: gcr.io/my-project/my-java-app

使用kubectl apply命令来创建你的部署:

kubectl apply -f my-java-app-deployment.yaml

暴露Kubernetes部署:你需要暴露你的Kubernetes部署,这样你的应用就可以被外部访问。你可以使用kubectl expose命令来暴露部署:

kubectl expose deployment my-java-app --type=LoadBalancer --port=8080

能直接创建pod吗

在使用kubectl create -f deployment.yaml命令创建Deployment时,它会自动创建和管理Pod副本集。Deployment资源定义了Pod模板,Kubernetes会根据该模板创建和管理Pod副本,但Deployment本身不直接创建单个Pod。

每当创建一个新的Deployment资源,Kubernetes会根据指定的配置创建一个或多个Pod副本,并确保Pod副本的数量与指定的副本数保持一致。Deployment资源会根据指定的策略进行滚动升级、扩容、缩容等操作,以保证应用程序的高可用性和可靠性。

因此,使用kubectl create -f deployment.yaml命令会创建Deployment资源,并由Kubernetes自动负责根据Deployment的配置创建和管理Pod副本集。不需要单独使用kubectl create -f pod.yaml命令来创建Pod。

本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!