dockerfile(容器镜像构建文件)

Dockerfile 用于定义容器镜像的构建方式,包括基础镜像、依赖安装、文件复制等。 通过 Dockerfile 文件可以构建应用的容器镜像,用于在 Kubernetes 中部署应用。

示例:

# 使用 openjdk:11 镜像作为基础镜像
FROM openjdk:11
# 维护者信息
MAINTAINER huq
# 设置临时文件目录为容器内的 /tmp 目录
VOLUME /tmp
# 将当前目录下所有的 .jar 文件复制到容器内的 /huq.jar 文件
COPY *.jar /huq.jar
# 创建一个用于部署的目录
RUN mkdir /opt/deploy
# 创建一个用于上传文件的目录
RUN mkdir /opt/deploy/upload
# 容器启动命令,运行 Spring Boot 应用程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/huq.jar"]
# 暴露容器的端口号
EXPOSE 8080

Kubernetes service(服务配置):

Service 用于定义应用的服务暴露方式,包括暴露的端口、服务类型等。 通过 Service 文件可以将应用的后端 Pod 与外部网络连接起来。

示例

# 指定 Kubernetes API 版本
apiVersion: v1
# 定义资源类型为 Service
kind: Service
metadata:
  # 指定 Service 的名称为 huq-app-service
  name: huq-app-service
spec:
  # 指定 Service 的选择器
  selector:
    # 标识要连接到该 Service 的 Pod 的标签
    app: huq-app
  # 指定 Service 的端口配置
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  # 指定 Service 的类型为 LoadBalancer
  type: LoadBalancer

Kubernetes Deployment(部署配置)

Deployment 用于定义应用的部署方式,包括副本数量、Pod 模板等。 通过 Deployment 文件可以指定容器镜像的来源、端口映射等信息。

示例

# 指定 Kubernetes API 版本
apiVersion: apps/v1
# 定义资源类型为 Deployment
kind: Deployment
metadata:
  # 指定 Deployment 的名称为 huq-app
  name: huq-app
spec:
  # 指定副本数为 1
  replicas: 1
  selector:
    matchLabels:
      # 选择具有 app=huq-app 标签的 Pod
      app: huq-app
  template:
    metadata:
      labels:
        # 为 Pod 设置 app=huq-app 标签
        app: huq-app
    spec:
      containers:
        - name: huq-app-container
          # 指定容器使用的镜像及其版本
          image: huq-app-image:latest
          ports:
            - containerPort: 80