k8s-Controller部署有状态应用

k8s-Controller部署有状态应用

一、无状态和有状态

1.无状态特点

  • 认为Pod都是一样的
  • 没有顺序要求
  • 不用考虑在哪个node运行
  • 随意进行伸缩,扩展

2.有状态特点

  • 上面的因素都需要考虑到
  • 让每个pod都是独立的,保持pod启动顺序和唯一性
  • 通过唯一的网络标识符持久存储
  • 有序,比如mysql主从

二、部署有状态应用(SatefulSet)

  • 无头service

概念:ClusterIp:none

  • SatefulSet
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None // 无头service
  selector:
    app: nginx

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nginx-statefulset
  namespace: default
spec:
  serviceName: nginx
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80


  • deployment和statefulset区别:有身份的(唯一标识)
    • 根据主机名 + 按照一定规则生成域名
    • 每个pod有唯一主机名
    • 唯一域名 格式主机名称.service名称.名称空间.svc.cluster.local

三、部署守护进程(DaemonSet)

在每个node节点上运行同一个pod,新加入的node也是同样运行在一个pod里面

例如: 在每个node节点安装数据采集工具

DaemonSet yaml文件

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ds-test
  labels:
    app: filebeat
spec:
  selector:
    matchLabels:
      app: filebeat
  template:
    metadata:
      labels:
        app: filebeat
    spec:
      containers:
      - name: logs
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: varlog
          mountPath: /tmp/log
      volumes:
      - name: varlog
        hostPath:
          path: /var/log

四、job(一次性任务)

apiVersion: batch/v1
kind: job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl","-Mbignum=bpi","-wle","print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4 // 失败尝试
查看
kubectl get jobs

五、cornjob(定时任务)

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

k8s-Controller部署有状态应用

上一篇:操作系统 - 扇区,磁盘块,页


下一篇:9.3模拟赛