0


微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka

1 安装Redis

1.1创建配置文件redis.conf

切换到自己的目录下如本文是放在/home/ubuntu下

  • cd /home/ubuntu
  • vim redis.conf
  1. bind 0.0.0.0
  2. protected-mode yes
  3. port 6379
  4. requirepass qwe123456
  5. tcp-backlog 511
  6. timeout 0
  7. tcp-keepalive 300
  8. daemonize no
  9. pidfile /var/run/redis_6379.pid
  10. loglevel notice
  11. logfile "/tmp/redis.log"
  12. databases 16
  13. always-show-logo no
  14. stop-writes-on-bgsave-error yes
  15. rdbcompression yes
  16. rdbchecksum yes
  17. dbfilename dump.rdb
  18. dir /data

1.2创建deployment配置文件

  • vim redis.yaml
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. labels:
  5. app: redis-single-node
  6. name: redis-single-node
  7. spec:
  8. progressDeadlineSeconds: 600 #部署进度截止时间
  9. replicas: 1 #副本数
  10. revisionHistoryLimit: 10 #修订历史记录限制数
  11. selector:
  12. matchLabels:
  13. app: redis-single-node #选择器,用于选择匹配的Pod
  14. strategy:
  15. rollingUpdate:
  16. maxSurge: 1
  17. maxUnavailable: 0
  18. type: RollingUpdate
  19. template:
  20. metadata:
  21. creationTimestamp: null
  22. labels:
  23. app: redis-single-node
  24. spec:
  25. containers:
  26. - command:
  27. - sh
  28. - -c
  29. - redis-server "/mnt/redis.conf"
  30. env:
  31. - name: TZ
  32. value: Asia/Shanghai
  33. - name: LANG
  34. value: C.UTF-8
  35. image: redis:5.0.4-alpine #Redis镜像版本
  36. imagePullPolicy: IfNotPresent
  37. lifecycle: {}
  38. livenessProbe:
  39. failureThreshold: 2 #失败的最大次数2次
  40. initialDelaySeconds: 10 #启动容器后10秒开始检测
  41. periodSeconds: 10 #每过10s检测一次
  42. successThreshold: 1 #只要成功了1次,就表示成功了。
  43. tcpSocket:
  44. port: 6379
  45. timeoutSeconds: 2
  46. name: redis-single-node
  47. ports:
  48. - containerPort: 6379
  49. name: web
  50. protocol: TCP
  51. readinessProbe:
  52. failureThreshold: 2
  53. initialDelaySeconds: 10
  54. periodSeconds: 10
  55. successThreshold: 1
  56. tcpSocket:
  57. port: 6379
  58. timeoutSeconds: 2
  59. resources: #资源限制
  60. limits: #最多可使用的资源
  61. cpu: 100m #CPU的计量单位叫毫核(m)。一个节点的CPU核心数量乘以1000,得到的就是节点总的CPU总数量。如,一个节点有两个核,那么该节点的CPU总量为2000m
  62. memory: 339Mi
  63. requests: #代表容器启动请求的资源限制,分配的资源必须要达到此要求
  64. cpu: 10m
  65. memory: 10Mi
  66. securityContext: #上下文参数
  67. privileged: false #特权,最高权限
  68. runAsNonRoot: false #禁止以root用户启动容器 true为禁止
  69. terminationMessagePath: /dev/termination-log #表示容器的异常终止消息的路径,默认在 /dev/termination-log 下。当容器退出时,可以通过容器的状态看到退出信息。
  70. terminationMessagePolicy: File #默认情况容器退出时,退出信息会从文件中读取。 可以修改为 FallbackToLogsOnError 从日志中读取
  71. volumeMounts:
  72. - mountPath: /usr/share/zoneinfo/Asia/Shanghai
  73. name: tz-config
  74. - mountPath: /etc/localtime
  75. name: tz-config
  76. - mountPath: /etc/timezone
  77. name: timezone
  78. - mountPath: /mnt
  79. name: redis-conf
  80. readOnly: true
  81. dnsPolicy: ClusterFirst
  82. restartPolicy: Always
  83. schedulerName: default-scheduler
  84. securityContext: {}
  85. terminationGracePeriodSeconds: 30 #在规定的terminationGracePeriodSeconds优雅时间内完成Pod优雅终止动作。默认是30秒
  86. tolerations: #零容忍设置
  87. - effect: NoExecute #即使在节点上存在污点,也不会将Pod从该节点上删除
  88. key: node.kubernetes.io/unreachable
  89. operator: Exists
  90. tolerationSeconds: 30
  91. - effect: NoExecute
  92. key: node.kubernetes.io/not-ready
  93. operator: Exists
  94. tolerationSeconds: 30
  95. volumes:
  96. - hostPath:
  97. path: /usr/share/zoneinfo/Asia/Shanghai
  98. type: ""
  99. name: tz-config
  100. - hostPath:
  101. path: /etc/timezone
  102. type: ""
  103. name: timezone
  104. - configMap:
  105. defaultMode: 420
  106. name: redis-conf
  107. name: redis-conf
  • 1.创建k8sConfig Maps配置文件kubectl create cm redis-conf --from-file=redis.conf
  • 2.部署redis Deploymentskubectl create -f redis.yaml
  • 3.将资源公开一个新的服务service`kubectl expose deploy redis-single-node --port 6379
  • 4.对外开放6379端口找到service编辑type为NodePort,设置nodePort: 6379
  • 到此安装完成之后就可以使用可视化工具(如AnotherRedisDesktopManager)或者代码进行测试连接。

2 安装MongoDB

这里使用Helm安装所以需要先安装一下Helm,如果已经安装跳过2.1这个小步骤

2.1 安装Helm

2.2开始MongoDB安装

  • 创建pvvim mongodb-pv.yaml
  1. apiVersion: v1
  2. kind: PersistentVolume
  3. metadata:
  4. name: mongodb-pv
  5. spec:
  6. capacity:
  7. storage: 5Gi
  8. accessModes:
  9. - ReadWriteOnce
  10. hostPath:
  11. path: /bitnami/mongodb/data

以上内容中/bitnami/mongodb/data是主机真实路径,小提示如果没有权限需要赋权限给uid为1001

  • 创建pvcvim mongodb-pvc.yaml
  1. apiVersion: v1
  2. kind: PersistentVolumeClaim
  3. metadata:
  4. name: mongodb-pvc
  5. spec:
  6. accessModes:
  7. - ReadWriteOnce
  8. resources:
  9. requests:
  10. storage: 5Gi
  11. volumeName: mongodb-pv
  • 创建配置文件vim mongodb-values.yaml
  1. persistence:
  2. enabled: true
  3. existingClaim: "mongodb-pvc"
  4. securityContext:
  5. privileged: true
  6. runAsUser: 1001
  7. runAsGroup: 1001
  8. fsGroup: 1001
  9. auth:
  10. rootPassword: "自定义密码"

创建完以上三个文件之后按顺序执行如下:

  1. kubectl apply -f mongodb-pv.yaml

  1. kubectl apply -f mongodb-pvc.yaml

  1. helm install my-mongodb bitnami/mongodb -f mongodb-values.yaml --set volumePermissions.enabled=true

提示–set volumePermissions.enabled=true第③必须加这个不然pod创建的时候没有权限创建文件夹及文件会报错mkdir: cannot create directory ‘/bitnami/mongodb/data’: Permission denied

安装成功之后如果想让外网访问跟上面redis一样service编辑type为NodePort,设置nodePort: 27017,端口号自定义只要防火墙对外开放就行

卸载使用helm uninstall my-mongodb

  • 用navicat测试连接能否成功 也可以用MongoDB Compass,;连接地址格式为:mongodb://root:密码@ip:端口
  • 修改用户密码,如下图可以使用工具直接执行命令

先切换至admin库

  1. use admin

再执行修改

  1. db.changeUserPassword("用户名","密码")

3 安装kafka

前置条件参考第2步安装MongoDB中的创建pv跟pvc命名为kafka-pv和kafka-pvc

3.1 Helm部署kafka

  • 创建配置文件kafka-values.yaml内容如下
  1. replicaCount: 1 # kafka 副本数
  2. #global:
  3. # storageClass: nfs-client # kafka 和 zookeeper 使用的存储
  4. heapOpts: "-Xmx1024m -Xms1024m" # kafka 启动的 jvm 参数
  5. persistence: # kafka 每个副本的存储空间
  6. enabled: true
  7. existingClaim: "kafka-pvc"
  8. resources:
  9. limits:
  10. cpu: 1000m
  11. memory: 2Gi
  12. requests:
  13. cpu: 100m
  14. memory: 100Mi
  15. zookeeper:
  16. replicaCount: 1 # zookeeper 的副本数
  17. persistence:
  18. enabled: true
  19. existingClaim: "kafka-pvc"
  20. resources:
  21. limits:
  22. cpu: 2000m
  23. memory: 2Gi
  24. externalAccess:
  25. enabled: true # 开启外部访问
  26. autoDiscovery:
  27. enabled: true
  28. service:
  29. type: NodePort # 开启 nodeport
  30. ports:
  31. external: 9094
  32. nodePorts: # nodeport 对应的端口,多少个 kafka 副本对应多少个端口
  33. - 30001
  34. # - 30002
  35. # - 30003

执行部署

  1. helm install my-kafka bitnami/kafka -f kafka-values.yaml --set volumePermissions.enabled=true --set rbac.create=true

3.1 安装简洁版的管理界面kafka-console-ui

  • 创建kafka-console-ui-deploy.yaml
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: kafka-console-ui
  5. namespace: default
  6. spec:
  7. replicas: 1
  8. selector:
  9. matchLabels:
  10. app: kafka-console-ui
  11. template:
  12. metadata:
  13. labels:
  14. app: kafka-console-ui
  15. spec:
  16. containers:
  17. - name: kafka-console-ui
  18. resources:
  19. limits:
  20. cpu: 1000m
  21. memory: 1Gi
  22. requests:
  23. cpu: 10m
  24. memory: 10Mi
  25. image: wdkang/kafka-console-ui:latest
  26. volumeMounts:
  27. - mountPath: /etc/localtime
  28. readOnly: true
  29. name: time-data
  30. volumes:
  31. - name: time-data
  32. hostPath:
  33. path: /usr/share/zoneinfo/Asia/Shanghai
  • 创建kafka-console-ui-service.yaml
  1. kind: Service
  2. apiVersion: v1
  3. metadata:
  4. labels:
  5. app: kafka-console-ui
  6. name: kafka-console-ui
  7. namespace: default
  8. spec:
  9. ports:
  10. - port: 7766
  11. targetPort: 7766
  12. nodePort: 30088
  13. selector:
  14. app: kafka-console-ui
  15. type: NodePort
  • 执行部署命令

  1. kubectl apply -f kafka-console-ui-service.yaml

  1. kubectl apply -f kafka-console-ui-deploy.yaml

本文转载自: https://blog.csdn.net/wyb926/article/details/131889451
版权归原作者 wyb926 所有, 如有侵权,请联系我们删除。

“微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka”的评论:

还没有评论