找回密码
 立即注册
快捷导航

[Docker/K8s] Kubernetes/k8s StatefuSet

[复制链接]
茎肛互撸娃 2023-7-20 03:51:24 | 显示全部楼层
本帖最后由 茎肛互撸娃 于 2023-7-20 04:46 编辑

StatefulSet 是用来管理有状态的应用,例如数据库。

前面我们部署的应用,都是不需要存储数据,不需要记住状态的,可以随意扩充副本,每个副本都是一样的,可替代的。

而像数据库、Redis 这类有状态的,则不能随意扩充副本。

StatefulSet 会固定每个 Pod 的名字

部署 StatefulSet 类型的 Mongodb

mongo.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongodb
spec:
  serviceName: mongodb
  replicas: 3
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
        - name: mongo
          image: mongo:4.4
          # IfNotPresent 仅本地没有镜像时才远程拉,Always 永远都是从远程拉,Never 永远只用本地镜像,本地没有则报错
          imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: mongodb
spec:
  selector:
    app: mongodb
  type: ClusterIP  
  clusterIP: None   # HeadLess类型服务,也就不会分配集群ip了,只能通过服务名字访问
  ports:
    - port: 27018  # 服务端口
      targetPort: 27017    # 容器端口

部署:kubectl apply -f mongo.yaml

StatefulSet 特性

[root@k8s-master ~]# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
mongodb-0                   1/1     Running   0          65s
mongodb-1                   1/1     Running   0          33s
mongodb-2                   1/1     Running   0          20s

[root@k8s-master ~]# kubectl get svc
NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.96.0.1       <none>        443/TCP          4h14m
mongodb               ClusterIP   None            <none>        27018/TCP        80s
test-k8s              ClusterIP   10.96.154.148   <none>        5111/TCP         43m
  • Service 的 CLUSTER-IP 是空的,Pod 名字也是固定的。
  • Pod 创建和销毁是有序的,创建是顺序的,销毁是逆序的。
  • Pod 重建不会改变名字,除了IP,所以不要用IP直连

Endpoints 会多一个 hostname,如下图:
Kubernetes/k8s StatefuSet862 作者:茎肛互撸娃 帖子ID:518 访问时,如果直接使用 Service 名字连接,会随机转发请求

要连接指定 Pod,可以这样 pod-name.service-name

运行一个临时 Pod 连接数据测试下

kubectl run mongodb-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mongodb:4.4.10-debian-10-r20 --command -- bash

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-10-30 10:19

Powered by Discuz! X3.5 and PHP8

快速回复 返回顶部 返回列表