2022年10月更文挑战15-利用kubesphere进行redis有状态部署

69 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

利用kubesphere进行redis有状态部署

前文

本文内容主要是关于k8s中的有状态部署,文章内容会采用kubesphere替代直接直接进行yaml文件的编写,通过可视化界面直接进行有状态部署的创建。

什么是有状态部署

有状态部署一般是指statefulSet,也就是创建的部署内部实际存在具体的状态,包括启动顺序等等若干内容都会直接指定。它与无状态部署有所区别,一般会自带一个headless类型的服务,也就是无法通过clusterIp进行访问或直接进行访问,需要通过pod-name.service-name进行访问。如果需要在外部进行有状态部署的访问,那么我们同样需要单独进行service的创建,可以采用nodeport类型,保证外部可以直接进行访问。

创建有状态部署redis的步骤

  • 首先需要进行kubesphere项目的创建,直接在可视化面板操作即可。
  • 创建项目后,根据redis的特性,我们需要预先进行configMap的创建,在其中主要是进行redis配置文件的设置。
  • 此后,我们就可以进行redis的statefulSet的配置。而在配置的过程中,需要注意要进行端口的绑定。同样的,如果我们需要让该有状态部署能够被外部进行访问,我们也需要进行一下nodeport类型的service配置,并在其中进行端口的映射。
kind: Service
apiVersion: v1
metadata:
  name: redis-service
  namespace: iiot
  labels:
    app: redis-service
  annotations:
    kubesphere.io/alias-name: redis-service
    kubesphere.io/creator: admin
spec:
  ports:
    - name: http-0
      protocol: TCP
      port: 16379
      targetPort: 6379
      nodePort: 31105
  selector:
    app: iiot-redis
  clusterIP: 10.97.9.113
  clusterIPs:
    - 10.97.9.113
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster

如上,我们单独进行了service的指定,即可通过平台外进行该redis的访问,访问的ip则是该service创建出来的nodeport对应的ip: 而如果在其他pod内想要进行该redis的访问,我们需要利用podname.servicename进行访问,组合后能够映射到对应的pod内:

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。