K8S部署hazelcast
2023-09-14 09:01:49 时间
rbac
Hazelcast uses Kubernetes API for auto-discovery. That is why you need to grant certain roles to your service account. You can do it by creating the following “rbac.yaml” file.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: default-cluster
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: ServiceAccount
name: default
namespace: dmcca-spark-operator
deploy && svc
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: '3'
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: ClusterIP
k8s.kuboard.cn/workload: hazelcast
creationTimestamp: '2021-11-10T02:49:46Z'
generation: 5
labels:
k8s.kuboard.cn/layer: ''
k8s.kuboard.cn/name: hazelcast
managedFields:
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
.: {}
'f:k8s.kuboard.cn/ingress': {}
'f:k8s.kuboard.cn/service': {}
'f:k8s.kuboard.cn/workload': {}
'f:labels':
.: {}
'f:k8s.kuboard.cn/layer': {}
'f:k8s.kuboard.cn/name': {}
'f:spec':
'f:progressDeadlineSeconds': {}
'f:replicas': {}
'f:revisionHistoryLimit': {}
'f:selector': {}
'f:strategy':
'f:rollingUpdate':
.: {}
'f:maxSurge': {}
'f:maxUnavailable': {}
'f:type': {}
'f:template':
'f:metadata':
'f:labels':
.: {}
'f:k8s.kuboard.cn/layer': {}
'f:k8s.kuboard.cn/name': {}
'f:spec':
'f:affinity':
.: {}
'f:podAntiAffinity':
.: {}
'f:requiredDuringSchedulingIgnoredDuringExecution': {}
'f:containers':
'k:{"name":"hazelcast"}':
.: {}
'f:env':
.: {}
'k:{"name":"DNS_DOMAIN"}':
.: {}
'f:name': {}
'f:value': {}
'k:{"name":"POD_NAMESPACE"}':
.: {}
'f:name': {}
'f:value': {}
'f:image': {}
'f:imagePullPolicy': {}
'f:lifecycle': {}
'f:name': {}
'f:ports':
.: {}
'k:{"containerPort":5701,"protocol":"TCP"}':
.: {}
'f:containerPort': {}
'f:name': {}
'f:protocol': {}
'f:resources': {}
'f:terminationMessagePath': {}
'f:terminationMessagePolicy': {}
'f:dnsConfig': {}
'f:dnsPolicy': {}
'f:restartPolicy': {}
'f:schedulerName': {}
'f:securityContext':
.: {}
'f:seLinuxOptions': {}
'f:terminationGracePeriodSeconds': {}
manager: Mozilla
operation: Update
time: '2021-11-10T03:37:49Z'
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
'f:deployment.kubernetes.io/revision': {}
'f:status':
'f:availableReplicas': {}
'f:conditions':
.: {}
'k:{"type":"Available"}':
.: {}
'f:lastTransitionTime': {}
'f:lastUpdateTime': {}
'f:message': {}
'f:reason': {}
'f:status': {}
'f:type': {}
'k:{"type":"Progressing"}':
.: {}
'f:lastTransitionTime': {}
'f:lastUpdateTime': {}
'f:message': {}
'f:reason': {}
'f:status': {}
'f:type': {}
'f:observedGeneration': {}
'f:readyReplicas': {}
'f:replicas': {}
'f:unavailableReplicas': {}
'f:updatedReplicas': {}
manager: kube-controller-manager
operation: Update
time: '2021-11-10T03:37:49Z'
name: hazelcast
namespace: dmcca-spark-operator
resourceVersion: '109451958'
uid: d0523d40-6919-48b2-b8fe-5bc60ee6254c
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: ''
k8s.kuboard.cn/name: hazelcast
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: ''
k8s.kuboard.cn/name: hazelcast
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector: {}
namespaces:
- dmcca-spark-operator
topologyKey: kubernetes.io/hostname
containers:
- env:
- name: DNS_DOMAIN
value: cluster.local
- name: POD_NAMESPACE
value: dmcca-spark-operator
image: '192.168.xxxx/lego/quay.io/pires/hazelcast-kubernetes:3.12.3'
imagePullPolicy: IfNotPresent
lifecycle: {}
name: hazelcast
ports:
- containerPort: 5701
name: hazelcast
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
seLinuxOptions: {}
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
annotations:
k8s.kuboard.cn/workload: hazelcast
creationTimestamp: '2021-11-10T02:49:46Z'
labels:
k8s.kuboard.cn/layer: ''
k8s.kuboard.cn/name: hazelcast
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
.: {}
'f:k8s.kuboard.cn/workload': {}
'f:labels':
.: {}
'f:k8s.kuboard.cn/layer': {}
'f:k8s.kuboard.cn/name': {}
'f:spec':
'f:ports':
.: {}
'k:{"port":5701,"protocol":"TCP"}':
.: {}
'f:name': {}
'f:port': {}
'f:protocol': {}
'f:targetPort': {}
'f:selector':
.: {}
'f:k8s.kuboard.cn/layer': {}
'f:k8s.kuboard.cn/name': {}
'f:sessionAffinity': {}
'f:type': {}
manager: Mozilla
operation: Update
time: '2021-11-10T02:49:46Z'
name: hazelcast
namespace: dmcca-spark-operator
resourceVersion: '109398374'
uid: f2c7ad8b-fad8-48c1-93bc-c9e35358acc3
spec:
clusterIP: 10.97.63.178
clusterIPs:
- 10.97.63.178
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: hazelcast
port: 5701
protocol: TCP
targetPort: 5701
selector:
k8s.kuboard.cn/layer: ''
k8s.kuboard.cn/name: hazelcast
sessionAffinity: None
type: ClusterIP
环境变量选项
To configure Hazelcast inside of the Kubernetes cluster the following environment options can be used:
HAZELCAST_SERVICE - name of the Hazelcast service, declared in the Kubernetes service configuration. Default: hazelcast.
DNS_DOMAIN - domain name used inside of the cluster. Default: cluster.local.
POD_NAMESPACE - namespace in which hazelcast should be running. Default: default. Use the Downward API to set it automatically.
HC_GROUP_NAME - Hazelcast group name. Default: someGroup.
HC_GROUP_PASSWORD - Hazelcast group password. Default: someSecret.
HC_PORT - Port on which Hazelcast should be running.
HC_REST_ENABLED - Whether to enable Hazelcast REST API. Default: false.
参考链接:
- 源码地址:
https://github.com/pires/hazelcast-kubernetes-bootstrapper/tree/hazelcast-kubernetes-bootstrapper-3.12.3 - deploy svc yaml地址:
https://github.com/pires/hazelcast-kubernetes - rbac
https://hazelcast.com/blog/how-to-use-embedded-hazelcast-on-kubernetes/
相关文章
- K8S 集群部署
- 【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
- 写给大家看的“不负责任” K8s 入门文档
- Centos7 k8s v1.5.2二进制部署安装-dashboard--WEB管理
- Centos7 k8s v1.5.2二进制部署安装-服务暴露ingress控制器之traefik
- K8s 介绍
- Centos7 RKE部署高可用k8s集群
- Centos7 k8s v1.5.2二进制部署安装-基本准备
- argo workflows名称空间(namespace)Service Account(sa)的创建及赋予角色k8s命令脚本
- 【完整示例】采用jenkins pipeline实现自动构建并部署至k8s
- 【收藏】Spark on k8s Operator 部署安装
- 安装kube-prometheus项目:k8s部署prometheus、监控k8s核心组件、添加告警(微信、钉钉、企业微信)、进行数据持久化
- K8S Dashboard部署tomcat集群
- 【GO】 K8s 管理系统项目2[API部分--Deployment]
- Kubernetes(k8s)中dashboard的部署。
- k8s 无头service 方式向内发布
- k32.第十三章 K8s高级篇-中间件容器化及Helm (三)
- 【云原生之kubernetes实战】在k8s环境下部署Laverna笔记工具
- 【云原生之kubernetes实战】在k8s环境下部署Wordpress应用服务
- 【云原生之kubernetes实战】部署k8s集群管理平台Wayne
- 【云原生】Hadoop on k8s 环境部署
- Kubeadm高可用部署K8S 1.24版本---保姆级超详细!!!
- k8s-有状态应用编排
- k8s 1.15.2 部署
- k8s部署微服务项目
- 【 博客583】k8s常用集群运维操作命令汇总
- K8s的Service详解
- K8s 应用的网络可观测性: Cilium VS DeepFlow
- k8s学习之路 | k8s 工作负载 DaemonSet