k8s常用工作负载

本文介绍了k8s中的常见工作负载控制器,包括Deployment用于无状态应用部署,StatefulSet处理有状态应用,DaemonSet确保每个节点运行相同pod,Job执行一次性任务,而CronJob则用于定时任务。讨论了Deployment的滚动更新、回滚和副本管理功能,以及如何进行水平扩容和回滚操作。同时提到了ReplicaSet的副本数量管理和 DaemonSet在每个节点上运行pod的特性。最后,简述了Job和CronJob的应用场景,如一次性任务和定时备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

k8s常用工作负载

工作负载控制器(Workload Controllers)时k8s的一个抽象的概念,用于更高级层次对象,部署和管理Pod,常用于工作负载控制器:

Deployment:无状态应用部署

StatefulSet:有状态应用部署

DaemonSet:确保所有node运行同一个pod

job:一次性任务

Cronjob:定时任务

控制器的作用:

管理pod对象

使用标签与pod关联

控制器实现了pod的运维,列如滚动更新、伸缩、副本管理、维护pod状态等。

Deployment的功能:

管理pod和ReplicaSet

具体由上线部署、副本设定、滚动升级、回滚等功能

提供声明时更新、列如只更新的一个新的lmage

流程:

应用程序—部署—升级—回滚—下线

Deployment部署

[root@master manifest]# cat test2.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: default
spec:
  replicas: 5
  selector:
    matchLabels: 
      app: apache
  template:
    metadata:
      labels: 
        app: apache
    spec:
      containers:
      - image: sktystwd/apache:v0.1
        imagePullPolicy: IfNotPresent
        name: httpd


[root@master ~]# kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
web-6bcd5cffd7-8jfjx   1/1     Running   0          6s
web-6bcd5cffd7-gmmqq   1/1     Running   0          6s
web-6bcd5cffd7-lnfl4   1/1     Running   0          6s
web-6bcd5cffd7-x67cb   1/1     Running   0          6s
web-6bcd5cffd7-zh869   1/1     Running   0          6s

Deployment滚动升级

[root@master manifest]# cat test2.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: default
spec:
  replicas: 5
  strategy:
    rollingUpdate:
      maxSurge: 30%
      maxUnavailable: 30%
    type: RollingUpdate
  selector:
    matchLabels: 
      app: apache
  template:
    metadata:
      labels: 
        app: apache
    spec:
      containers:
      - image: sktystwd/apache:v0.2
        imagePullPolicy: IfNotPresent
        name: httpd

maxSurge:滚动更新过程中最大pod副本数,确保在更新时启动的pod数量比期望(replicas)pod数量最大多出25%

maxUnavailable:滚动更新过程中最大不可

### Kubernetes 集群常用命令操作指南 #### 获取集群资源状态 为了获取集群中的节点信息,`kubectl get nodes` 是一个基本而重要的命令。此命令返回当前集群中所有节点的状态和其他细节[^1]。 ```bash kubectl get nodes ``` 对于查看特定命名空间内的Pods,可以使用 `kubectl get pods -n namespace-name` 来列出该命名空间下的所有Pod及其运行状况。 #### 查看详细信息 当需要更详细的描述关于某个资源的信息时,比如想要了解某一个pod的具体情况,则可采用如下方式: ```bash kubectl describe pod <pod_name> [-n <namespace>] ``` 这条指令不仅会给出Pod的基础属性,还会提供事件日志等有助于排查问题的数据。 #### 日志与调试 如果遇到应用程序内部错误或者容器启动失败的情况,可以通过读取容器的日志来进行初步诊断: ```bash kubectl logs <pod_name> ``` 对于多容器的Pod来说,还可以指定具体要查看哪个容器的日志: ```bash kubectl logs <pod_name> -c <container_name> ``` 此外,在某些情况下可能还需要执行进入正在运行的容器环境中进一步调查问题所在: ```bash kubectl exec -it <pod_name> -- /bin/sh ``` 这允许管理员直接在目标容器里运行shell命令以便更好地理解其环境设置和行为表现。 #### 资源管理 除了上述提到的操作外,还有许多其他实用的功能可以帮助管理和维护Kubernetes集群的有效运作。例如调整副本数量、滚动更新应用版本或是回滚到之前的稳定状态等等。这些都是通过一系列精心设计好的API调用来完成的,并且大部分都可以经由`kubectl scale`, `kubectl rollout status/deployments/<deployment_name>` 和 `kubectl rollout undo deployment/<deployment_name>` 这样的简便形式来触发相应的行为。 #### 应用部署和服务发现 最后但同样重要的一点是服务定义和服务之间的通信机制。创建无头Service(Headless Service)配合StatefulSet控制器可用于构建像Elasticsearch或Etcd这样的有状态应用实例集;而对于大多数Web类负载而言,默认的服务类型ClusterIP就足以满足需求了[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值