K8S之Deployment控制pod

这篇具有很好参考价值的文章主要介绍了K8S之Deployment控制pod。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

configMap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: pub-oa-configmap
  namespace: hunter
data:
  MYSQL_HOST: pub-oa-db-svc
  MYSQL_PORT: 3306

sceret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: pub-oa-secret
  namespace: hunter
type: Opaque
data:
  MYSQL_USER: cm9vdA== # 注意加-n参数,echo -n root|base64
  MYSQL_PASSWORD: aHVudGVy

 service-mysql.yaml

apiVersion: apps/v1
kind: Service
metadata:
  name: pub-oa-db-svc
  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-svc
  namespace: hunter
spec:
  ports:
    - port: 8080
      protocal: TCP
      targetPort: 8080
  selector:
    app: pub-oa-web
  type: ClusterIP

mysql-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pub-oa-db
  namespace: hunter
spec:
  replicas: 1 # 指定pod的副本数量
  selector:
    matchLabels:
      app: pub-oa-db
  template:
    metadata:
      labels: # 给pod打label
        app: pub-oa-db
    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-secret
                  key: MYSQL_USER
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: pub-oa-secret
                  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: pub-oa-web
  namespace: hunter
spec:
  replicas: 1 # 指定pod的副本数量, 扩容web服务,kubectl scale deploy web --replicas=2
  selector:
    matchLabels: # 指定pod选择器
      app: pub-oa-web
  template:
    metadata:
      labels: # 给pod打label
        app: pub-oa-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-configmap
                  key: MYSQL_HOST
            - name: MYSQL_PORT
              valueFrom:
                configMapKeyRef:
                  name: pub-oa-configmap
                  key: MYSQL_PORT
            - name: MYSQL_USER
              valueFrom:
                secretKeyRef:
                  name: pub-oa-secret
                  key: MYSQL_USER
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: pub-oa-secret
                  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

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

文章来源地址https://www.toymoban.com/news/detail-699851.html

到了这里,关于K8S之Deployment控制pod的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s-基础知识(Pod,Deployment,ReplicaSet)

    自动化容器部署和复制 随时扩展或收缩容器 容器分组group,并且提供容器间的负载均衡 实时监控,即时故障发现,自动替换 pod pod是容器的容器,可以包含多个container pod是k8s最小可部署单元,容器的本质是一个隔离的进程,而Pod则是一组相互联系的进程(进程组)。Pod 内的多

    2024年01月23日
    浏览(50)
  • Kubernetes 启动Pod的方法-Pod的调度算法-Pod间的通信-k8s的控制器-Pod资源控制-发布Service服务

    目录 Pod 参考文档:Pod | Kubernetes Pod配置文件:simple-pod.yaml 对master进行如下操作 Pod的状态有: 参考文档:(70条消息) Pod生命周期中的状态解释_pod状态_闹玩儿扣眼珠子的博客-CSDN博客 进入Pod内的nginx容器: 当我们创建一个Pod,其中的步骤是什么?(启动Pob的流程) 大概步骤:

    2024年02月13日
    浏览(66)
  • 在学习k8s时候,pod services 和deployment

    在学习 Kubernetes(K8s)时,Pod、Service 和 Deployment 是三个非常重要的概念。它们是 Kubernetes 中用于管理容器化应用程序的核心组件。 Pod(Pods): Pod 是 Kubernetes 最基本的调度和管理单位,它是一个或多个紧密关联的容器的组合。Pod 提供了一个独立的运行环境,包含应用程序所

    2024年02月11日
    浏览(47)
  • 云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

    参考文章:kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为

    2024年02月04日
    浏览(53)
  • k8s 的 Deployment控制器

    RC(Replication Controller)主要作用就是用来确保容器应用的副本数始终保持在用户定义的副本数。即如果有容器异常退出,会自动创建新的pod来替代;而如果异常多出来的容器也会自动回收。 K8S官方建议使用RS(ReplicaSet)替代RC(Replication Controller)进行部署,RS跟RC没有本质的

    2024年02月09日
    浏览(61)
  • Kubernetes(k8s)报错error: deployment “nginx-deployment“ exceeded its progress deadline

    1)exceeded its progress deadline kubernetes执行命令 kubectl rollout status deployment.v1.apps/nginx-deployment 后提示错误如下: 检查Deployment描述 kubectl describe deployment nginx-deployment 报错原因:Pod升级超过了最大的时间限制,变成了超时状态,Pod升级失败 查看描述信息可以得知是因为nginx的版本

    2024年02月03日
    浏览(56)
  • 15-k8s控制器资源-deployment/部署控制器

            在学习rc和rs控制器资源时,我们指导,这两个资源都是控制pod的副本数量的,但是,他们两个有个缺点,就是在部署新版本pod或者回滚代码的时候,需要先apply资源清单,然后再删除现有pod,通过资源控制,重新拉取新的pod来实现回滚或者迭代升级;         那么

    2024年02月21日
    浏览(69)
  • K8S之Deployment控制器管理应用(十一)

    Deployment 介绍      Deployment是最常用的K8s工作负载控制器(Workload Controllers), 是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。      Deployment的主要功能: • 管理Pod,即应用程序 • 具有上线部署、副本设定、滚动升级、回滚等功能 应用场景:网站、API、微

    2024年02月08日
    浏览(53)
  • k8s控制器之Deployment第七弹之查看Deployment的状态

    Deployment 的生命周期中有不同状态,大致可分为三种 rogressing 正在执行滚动更新 complete fail to progress Progressing 状态 当如下任何一个任务正在执行时,kubernnete将Deployment 的状态标记为 progressing ; Deployment 创建了一个新的 ReplicaSet Deployment 正在 scale up 其最新的 ReplicaSet Deployment 正在

    2024年02月14日
    浏览(45)
  • 【Kubernetes】第二十二篇 - k8s 部署 MySQL 服务(secret、deployment、service)

    上一篇,介绍基于 k8s 项目部署流程设计; 本篇,介绍 MySQL 服务的部署; 部署 MySQL 可以为指定 node 添加污点,专门用于 mysql 部署(当前只有一个节点,不考虑); 为了保证mysql容器重启时数据不会丢失:创建 mysql 数据目录,用于存储 mysql 数据,实现 MySQL 数据的持久化;

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包