K8S之Deployment控制pod

mysql-deploy.yaml

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: hunter
spec:
  replicas: 1 # 指定pod的副本数量
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels: # 给pod打label
        app: mysql
    spec:
      volumes:
        - name: mysql
          hostPath:
            path: /opt/mysql/data
      nodeSelector: # 使用节点选择器将pod调度到指定的label节点
        component: prod-k8s-node1 # kubectl label node prod-k8s-node1 component=prod-k8s-node1
      containers:
        - name: pub-oa-db
          image: rigistry.cn-shanghai.aliyuncs.com/pub-oa-db:v1
          imagePullPolicy: IfNotPresent # 镜像拉去策略,此外还有Always, Never
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_USER
              valueFrom:
                secretKeyRef:
                  name: pub-oa
                  key: MYSQL_USER
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: pub-oa
                  key: MYSQL_PASSWORD
          resources: # 容器资源限制
            requests:
              memory: 100Mi # 当pod内存超过100Mi时,会报OOM
              cpu: 50m # 当cpu超过limit限制时,不会被kill,但是会限制不超过limit值,1 CPU = 1000 millicpu(1 core = 1000m(毫核)),cpu资源是按 "时间片"的方式来分配的
            limits:
              memory: 500Mi
              cpu: 100m
          volumeMounts:
            - name: mysql
              mountPath: /var/lib/mysql

web-deploy.yaml

复制代码
# overView:
# 1. 添加pod驱逐策略,在某些场景下如节点 NotReady,或则资源不足时,把pod驱逐至其他节点上
# 2. 添加pod更新策略

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: hunter
spec:
  replicas: 1 # 指定pod的副本数量, 扩容web服务,kubectl scale deploy web --replicas=2
  selector:
    matchLabels: # 指定pod选择器
      app: web
  template:
    metadata:
      labels: # 给pod打label
        app: web
    spec:
      nodeSelector: # 使用节点选择器将pod调度到指定的label节点
        component: prod-k8s-node1 # kubectl label node prod-k8s-node1 component=prod-k8s-node1
      containers:
        - name: pub-oa-web
          image: rigistry.cn-shanghai.aliyuncs.com/pub-oa-app:v1
          imagePullPolicy: IfNotPresent # 镜像拉去策略,此外还有Always, Never
          ports:
            - containerPort: 8080
          env:
            - name: MYSQL_HOST
              valueFrom:
                configMapKeyRef:
                  name: pub-oa
                  key: MYSQL_HOST
            - name: MYSQL_PORT
              valueFrom:
                configMapKeyRef:
                  name: pub-oa
                  key: MYSQL_PORT
            - name: MYSQL_USER
              valueFrom:
                secretKeyRef:
                  name: pub-oa
                  key: MYSQL_USER
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: pub-oa
                  key: MYSQL_PASSWORD
          livenessProbe: # 存活性探测
            httpGet: # 此外还有 exec,tcpSocket类型
              path: /code-library/listCodeLibrary
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 10 # 容器启动后,第一次执行探测时需要等待多少秒
            periodSeconds: 10 # 执行探测的频率
            timeoutSeconds: 2 # 探测超时时间
          readinessProbe: # 可用性探测
            httpGet: # 此外还有 exec,tcpSocket类型
              path: /code-library/listCodeLibrary
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 10 # 容器启动后,第一次执行探测时需要等待多少秒
            periodSeconds: 10 # 执行探测的频率
            timeoutSeconds: 2 # 探测超时时间
          resources: # 容器资源限制
            requests:
              memory: 100Mi # 当pod内存超过100Mi时,会报OOM
              cpu: 50m # 当cpu超过limit限制时,不会被kill,但是会限制不超过limit值,1 CPU = 1000 millicpu(1 core = 1000m(毫核)),cpu资源是按 "时间片"的方式来分配的
            limits:
              memory: 500Mi
              cpu: 100m
          volumeMounts:
            - name: mysql
              mountPath: /var/lib/mysql

service-mysql.yaml

复制代码
apiVersion: apps/v1
kind: Service
metadata:
  name: pub-oa
  namespace: hunter
spec:
  ports:
    - port: 3306
      protocal: TCP
      targetPort: 3306
  selector:
    app: pub-oa-db
  type: ClusterIP

service-web.yaml

复制代码
# 查看pod节点,并显示labels
# kubectl -n hunter get pods --show-labels
# 查看service
# kubectl -n hunter get svc
# 查看指定service
# kubectl -n hunter get svc pub-oa-web
# 查看某个service详情
# kubectl -n hunter describe svc pub-oa-web
# 查看pub-oa-web的 endpoints情况
# kubectl -n hunter get endpoints pub-oa-web

apiVersion: apps/v1
kind: Service
metadata:
  name: pub-oa-web
  namespace: hunter
spec:
  ports:
    - port: 8080
      protocal: TCP
      targetPort: 8080
  selector:
    app: pub-oa-web
  type: ClusterIP

web-endpoint.yaml

复制代码
# 为pub-oa-web做节点负载均衡
apiVersion: apps/v1
kind: Service
metadata:
  name: pub-oa-web-np
  namespace: hunter
spec:
  ports:
    - port: 8080
      protocal: TCP
      targetPort: 8080
  selector:
    app: pub-oa-web
  type: NodePort
相关推荐
张忠琳1 小时前
【containerd 2.1.8】(Part 1)containerd 2.1.8 超深度源码分析 — 总体架构与模块全景
云原生·kubernetes·containerd
真实的菜4 小时前
微服务注册配置中心终极选型:2026指南
微服务·云原生·架构
正经教主5 小时前
【docker基础】第五课:Docker网络详解
运维·docker·容器
Waay6 小时前
K8s ETCD 详解|备份恢复+静态Pod原理+kubectl查询底层流程(面试必考)
面试·kubernetes·etcd
松岩7 小时前
dcgm-exporter部分指标
kubernetes
我是谁??9 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
Patrick_Wilson9 小时前
K8s 探针避坑:Next.js 不同部署模式下的健康检查实践
kubernetes·node.js·next.js
运维瓦工10 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
Plastic garden10 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
Plastic garden10 小时前
k8s(11) Pod 控制器,服务发现与存储管理
kubernetes