持续创作,加速成长!这是我参与「掘金日新计划 · 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内:
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。