使用k8s.yml文件部署,k8s.yml文件的配置

1.K8S可以使用yml部署资源

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bm-gateway
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bm-gateway
  template:
    metadata:
      labels:
        app: bm-gateway
    spec:
      containers:
        - name: bm-gateway
          image: ${IMAGE_NAME}
          ports:
            - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: bm-gateway
spec:
  type: NodePort
  selector:
    app: bm-gateway
  ports:
    - name: http
      port: 8080
      targetPort: 8080
      nodePort: 31111

2.高级配置

1.添加容器环境变量

2.文件挂载

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        env: # 添加环境变量配置
        - name: MY_ENV_VAR
          value: "Hello Kubernetes"
        volumeMounts: # 添加日志挂载配置
        - name: nginx-logs
          mountPath: /var/log/nginx
      volumes: # 定义挂载卷
      - name: nginx-logs
        hostPath: # 使用HostPath类型挂载到主机
          path: /path/on/host/for/nginx/logs # 这里填写主机上的日志目录路径
          type: DirectoryOrCreate # 如果需要自动创建目录

3.高级(添加cpu与内存限制)

1.apiVersion: apps/v1 表示该 YAML 文件或资源定义遵循的是 Kubernetes API 的 apps/v1 版本

2.kind: Deployment 定义了一个 Kubernetes 部署(Deployment)资源,用于在 Kubernetes 集群中部署和管理容器化应用程序。

3.metadata:
  name: bm-product-service-app

描述了如何部署一个名为 bm-product-service-app 的应用。下面是详细的解释:

元数据(metadata)

  • name: 部署的名称,这里是 bm-product-service-app

规格(spec)

  • replicas: 指定要运行的副本数,这里是 1,意味着只会有一个 Pod 实例运行。
  • selector: 用于选择哪些 Pod 应该被这个部署管理。它通过标签选择器(matchLabels)实现,这里指定了 app: bm-product-service-app
  • template: 定义 Pod 的模板。
    • metadata: Pod 的元数据,包括标签 app: bm-product-service-app,这与选择器匹配。
    • spec: Pod 的规格。
      • containers: 容器列表。
        • name: 容器的名称,这里是 bm-product-service-app
        • image: 容器使用的镜像,这里是 registry.cn-beijing.aliyuncs.com/205erp/bm-product-service-app:2024-06-17-21-05-21,表示从阿里云的北京区域仓库拉取指定版本的镜像。
        • ports: 容器暴露的端口列表,这里指定了容器端口 8080
        • env: 环境变量列表。
          • SW_AGENT_NAME: 设置为 bm-product-service-app
          • SW_AGENT_COLLECTOR_BACKEND_SERVICES: 设置为 192.168.11.221:11800,这可能是 SkyWalking APM(应用性能管理)的后端服务地址。
          • JAVA_TOOL_OPTIONS: 设置为 -javaagent:/skywalking-agent/skywalking-agent.jar,用于指定 Java 代理,这里是为了集成 SkyWalking。
        • volumeMounts: 挂载卷列表,用于将存储卷挂载到容器的指定路径。
          • name: 挂载卷的名称,这里是 app-logs
          • mountPath: 挂载路径,这里是 /logs,意味着容器内的 /logs 目录将用于存储日志。
        • resources: 资源请求和限制。
          • requests: 请求的资源量,这里只指定了内存请求为 256Mi
          • limits: 资源的最大限制,这里只指定了内存限制为 1024Mi
  • volumes: 定义用于 Pod 的存储卷。
    • name: 存储卷的名称,这里是 app-logs
    • hostPath: 使用主机路径卷,允许将文件或目录从节点的文件系统挂载到 Pod 中。
      • path: 主机上的路径,这里是 /logs,意味着 Pod 内的 /logs 目录将映射到节点上的 /logs 目录。
      • type: 卷的类型,这里是 DirectoryOrCreate,表示如果目录不存在,则自动创建它。

这个 YAML 文件定义了一个 Kubernetes 部署,用于运行一个名为 bm-product-service-app 的 Java 应用,该应用使用 SkyWalking 进行性能监控,并将日志输出到挂载的主机目录 /logs。部署配置包括环境变量设置、资源请求和限制,以及日志存储的挂载配置。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bm-product-service-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bm-product-service-app
  template:
    metadata:
      labels:
        app: bm-product-service-app
    spec:
      containers:
        - name: bm-product-service-app
          image: registry.cn-beijing.aliyuncs.com/205erp/bm-product-service-app:2024-06-17-21-05-21
          ports:
            - containerPort: 8080
          env: # 添加环境变量配置
            - name: SW_AGENT_NAME
              value: bm-product-service-app
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: 192.168.11.221:11800
            - name: JAVA_TOOL_OPTIONS
              value: -javaagent:/skywalking-agent/skywalking-agent.jar
          volumeMounts: # 添加日志挂载配置
            - name: app-logs
              mountPath: /logs
          resources: # 新增资源限制
            requests:
              # cpu: "100m" # CPU 请求,例如 100m 表示 0.1 个 CPU 核心
              memory: "256Mi" # 内存请求,例如 256Mi 表示 256 MB
            limits:
              # cpu: "500m" # CPU 限制,例如 500m 表示 0.5 个 CPU 核心
              memory: "1024Mi" # 内存限制,例如 256Mi 表示 256 MB
      volumes: # 定义挂载卷
        - name: app-logs
          hostPath: # 使用HostPath类型挂载到主机
            path: /logs # 这里填写主机上的日志目录路径
            type: DirectoryOrCreate # 如果需要自动创建目录

好的,Kubernetes的`yaml`文件是用来描述Kubernetes对象的一种语言,是Kubernetes操作的重要方式之一。下面是一个`yaml`文件的基本结构: ```yaml apiVersion: [version] kind: [kind] metadata: [metadata] spec: [spec] ``` 其中,`apiVersion`指定了所使用Kubernetes API版本,`kind`指定了所要创建的Kubernetes对象的类型。`metadata`字段中包含了关于该对象的元数据信息,例如名称、标签等。`spec`字段中包含了关于该对象的具体配置信息。 下面是一个示例,展示了一个包含了三个容器的Deployment对象的`yaml`文件的结构: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: container-1 image: your-docker-image-1 - name: container-2 image: your-docker-image-2 - name: container-3 image: your-docker-image-3 ``` 在这个示例中,`apiVersion`为`apps/v1`,表示使用Kubernetes的`apps` API版本,`kind`为`Deployment`,表示创建一个Deployment对象。`metadata`中包含了`name`字段,表示该Deployment对象的名称。`spec`中包含了`replicas`字段,表示该Deployment对象需要创建3个Pod。`selector`字段中的`matchLabels`表示该Deployment对象会选择Label为`app: my-app`的Pod。`template`字段中包含了`metadata`和`spec`两个子字段,分别表示Pod的元数据和配置信息。`containers`字段中包含了三个容器的定义,分别为`container-1`、`container-2`和`container-3`。 总体来说,Kubernetes的`yaml`文件结构比较简单,但是需要注意各个字段的意义和用法,以便正确地进行配置和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这孩子叫逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值