Kubernetes-02-基础概念篇 运行容器Deployment、ReplicaSet、DaemonSet、StatefulSet、Job

一、Delpoyment

Deployment是最为常见的一种Controller,定义和编排一个或多个Pod

如何创建一个Deployment?

1.命令创建 kubectl run

参数清晰直观、使用便捷,可用于测试

2.配置文件创建 kubectl apply
  • 配置文件的形式,提供了创建资源的模板,有利于重复使用
  • 可以形成版本,同代码一起进行管理
  • 适合生产的交付流程
kubectl get deployment <name>

kubectl describe deployment <name>

创建了 Deployment 后就会隐式创建一个 ReplicaSet
可以通过kubectl describe replicaset来查看
流程:

  • (1)kubectl 创建Deploymnet
  • (2)Deploymnet 创建ReplicaSet
  • (3)ReplicaSet 创建Pod

相关操作的指令有:

  • kubectl apply
  • kubectl create
  • kubectl replace
  • kubectl edit
  • kubectl patch

YAML文件配置格式主要为,test.yaml:

apiVersion: v1
kind: Deployment
metadata:
  name: test-deploy
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app:testdeploy  
    spec:
      containers:
        name: test
        image: busybox:latest

使用 kubectl apply -f test.yaml 就能发布一个2个副本的服务,可以通过 kubectl get pods -n <namespace>来查看状态。

通常使用可以通过yaml配置,轻松控制副本数。如果Node节点故障,原Pod状态变为UNKONWN,而后在其他Node节点创建Pod以满足副本数要求。

二、DaemonSet

不同于普通Deployment,它在每个Node上只能最多运行一个副本,应用场景有

  1. 数据存储,例如ceph/glusterd
  2. 日志收集,例如flunentd/logstash
  3. 业务监控,例如Prometheus Node Exporter/collectd

k8s自身的DaemonSet服务类型主要有 kube-proxy,kube-flannel-ds

主要的区别就是:yaml文件中,kind是DaemonSet,test.yaml 如下:

apiVersion: apps/v1 
kind: DaemonSet 
metadata: 
  name: my-daemonset
spec: 
  selector: 
    matchLabels: 
      app: my-daemon
  template: 
    metadata: 
      labels: 
        app: my-daemon
    spec: 
      containers: 
        - name: daemonset-container 
          image: httpd 
          ports: 
          - containerPort : 80

三、Job

容器分为服务类容器工作类容器:

  • 服务类容器需要一直运行,Deployment\ReplicaSet\DaemonSet用于管理服务类容器
  • Job用于管理工作类容器,用完就可以销毁

Kind有: Job、CronJob
restartPolicy有: Never/OnFailure

test.yaml 如下

apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
        - name: example-container
          image: example-image
          command: ["echo", "Hello, Kubernetes!"]
      restartPolicy: Never

通过 kubectl get job 获取任务列表。

DESIRED 和 SUCCESSFUL 不符合时,

  • restartPolicy: Never,job会不断新建来达到DESIRED的要求;
  • restartPolicy: OnFailure,job会不断重启来达到DESIRED的要求;

可以通过parallelism 可以设置Job的并行度。

CronJob 的schedule配置cron表达式,K8S默认不开启CronJob功能,可以通过kube-apiserver的配置文件打开 --runtime-config=batch/v2alphha1=true,重启来生效。

猜你喜欢

转载自blog.csdn.net/c_zyer/article/details/132978467