zoukankan      html  css  js  c++  java
  • Kubernetes SatefulSet(有状态应用部署)

    Kubernetes SatefulSet(有状态应用部署)

    • 部署有状态应用
    • 解决Pod独立生命周期,保持Pod启动顺序和唯一性
    1. 稳定,唯一的网络标识符,持久存储
    2. 有序,优雅的部署和扩展、删除和终止
    3. 有序,滚动更新

    应用场景:数据库

    说明

    常规的service
    service:一组pod访问策略,提供负载均衡和服务发现
    其他:service 会分配一个 CLUSTER-IP 虚拟IP 使整个容器进行通信。

    headless service:无头服务
    headless service:与service类似,不同点在于clusterIP为None

    需要部署一个dns服务器
    https://www.cnblogs.com/xiangsikai/p/11413970.html

    案例

    创建有状态应用
    1、vim sts.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    
    ---
    
    apiVersion: apps/v1beta1
    kind: StatefulSet
    metadata:
      name: nginx-statefulset
      namespace: default
    spec:
      # 指定使用的service
      serviceName: nginx
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80

    2、创建容器

    kubectl create -f sts.yaml

    3、查看创建容器以及service、通过dns名称,保证每个固定的身份(pod/nginx-statefulset-x)标识。
    kubectl get pods,svc

    NAME READY STATUS RESTARTS AGE
    # statefulset-x 为身份标识
    pod/nginx-statefulset-0 1/1 Running 0 16s
    pod/nginx-statefulset-1 1/1 Running 0 13s
    pod/nginx-statefulset-2 1/1 Running 0 10s
    pod/sh-77649dbd59-ppfbx 1/1 Running 0 21m
    
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 5d16h
    service/nginx ClusterIP None <none> 80/TCP 26s

    4、临时启动程序测试解析,通过dns解析唯一标识的容器
    kubectl run --image=busybox:1.28.4 -it sh

    / # nslookup nginx-statefulset-0
    Server:    10.0.0.2
    Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local
    
    nslookup: can't resolve 'nginx-statefulset-0'

    如此可以比对出效果

    StatefulSet与Deployment区别:有身份的!
    身份三要素:
    • 域名
    • 主机名
    • 存储(PVC)

    ClusterIP A记录格式:<service-name>.<namespace-name>.svc.cluster.local
    ClusterIP=None A记录格式:<statefulsetName-index>.<service-name>.svc.cluster.local
    示例:web-0.nginx.default.svc.cluster.local


  • 相关阅读:
    ASP.NET Core Web API 帮助页
    SQL SERVER 被锁住的表,以及解锁。
    关键字查找相关存储过程,函数和视图
    MsSql 生成数据文档
    WebApiTestClient 接口测试页
    sql日期
    为什么同样的Sql语句在SqlServer RDS 查询得到的和自己本机SqlServer 查询的不一样呢?
    VS 无法在web服务器上启动调试。您没有调试web服务器进程的权限
    ROS学习之创建工作空间
    QT学习之forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget"
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/11424078.html
Copyright © 2011-2022 走看看