首页 > 其他 > 详细

k8s-Controller部署有状态应用

时间:2021-09-06 04:51:29      阅读:24      评论:0      收藏:0      [点我收藏+]

技术分享图片

一、无状态和有状态

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部署有状态应用

原文:https://www.cnblogs.com/wuzhixuan/p/15228357.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!