• 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


  • 相关阅读:
    又见Dooyoul
    用premake编译跨平台opencv程序
    [try it] 使用Apache Ant
    用OllyDbg做破解
    什么是SEO
    SEO最新百度排名算法调整
    SEO网站外链的建设
    SEO网站title优化
    网站title优化应注意的细节
    [ios]设置ARC 【转】
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/11424078.html
Copyright © 2020-2023  润新知