我是kubernetes的新手,我正在尝试将kafka与debezium和mysql集成在一起。 我在minikube上成功部署了kafka和mysql,一旦在minikube上部署了debezium yml,它就被挂起了,根本没有响应,然后我重新启动了minikube,在运行了所有pod minikube之后,又再次被挂起了。 下面是我的代码:
动物园管理员服务
ProcessBuilder
zookeeper部署:
String execLoc = ((System.getenv("APPDATA"))+"\\ARcraft\\exec\\Minecraft.exe");
ProcessBuilder getCrafting = new ProcessBuilder(execLoc);
getCrafting.start();
kafka服务:
apiVersion: v1
kind: Service
metadata:
name: zoo1
labels:
app: zookeeper-1
spec:
ports:
- name: client
port: 2181
protocol: TCP
- name: follower
port: 2888
protocol: TCP
- name: leader
port: 3888
protocol: TCP
selector:
app: zookeeper-1
kafka deployemnt:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: zookeeper-deployment-1
spec:
template:
metadata:
labels:
app: zookeeper-1
spec:
containers:
- name: zoo1
image: debezium/zookeeper
ports:
- containerPort: 2181
env:
- name: ZOOKEEPER_ID
value: "1"
- name: ZOOKEEPER_SERVER_1
value: zoo1
MySql持久性卷:
apiVersion: v1
kind: Service
metadata:
name: kafka-service
labels:
name: kafka
spec:
ports:
- port: 9092
name: kafka-port
protocol: TCP
selector:
app: kafka
id: "1"
type: NodePort
mysql部署:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: kafka-broker1
spec:
template:
metadata:
labels:
selector: kafka
app: kafka
id: "1"
spec:
containers:
- name: kafka
image: debezium/kafka
ports:
- containerPort: 9092
env:
- name: KAFKA_ADVERTISED_PORT
value: "9092"
- name: KAFKA_ADVERTISED_HOST_NAME
value: 192.168.39.47
- name: KAFKA_ZOOKEEPER_CONNECT
value: zoo1:2181
- name: KAFKA_BROKER_ID
value: "1"
- name: KAFKA_CREATE_TOPICS
value: hello-topic:3:3
Debezium部署:
#application/mysql/mysql-pv.yaml
kind: PersistentVolume
apiVersion: v1
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
当我部署debezium时,问题开始出现,并且minikube响应如
#application/mysql/mysql-deployment.yaml
# this command is for mysql client kubectl run -it --rm --image=debezium/example-mysql --restart=Never mysql-client -- mysql -h mysql -pdebezium
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
clusterIP: None
---
apiVersion: extensions/v1beta1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: debezium/example-mysql
name: mysql
env:
# Use secret in real usage
- name: MYSQL_ROOT_PASSWORD
value: debezium
- name: MYSQL_USER
value: mysqluser
- name: MYSQL_PASSWORD
value: mysqlpw
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
OS:Centos
minikube版本:v0.30.0
答案 0 :(得分:0)
我相信这是由于minikube启动的VM上的资源紧张而引起的。
默认情况下,当您开始使用minikube start
时,它仅占用系统2个CPU和2GB RAM,并且通过查看部署(kafka + mysql + debezium
)可能还不够。
通过将minikube start
与参数--cpu
和--memory
一起使用,可以增加分配给VM的CPU和内存(值应以MB为单位)。
有关更多信息,请执行minikube start -h
我强烈建议,如果您要进行繁重的部署,则应该使用具有更多资源的计算机。
希望这会有所帮助。
答案 1 :(得分:0)
您应该为基于Java的Pod设置内存限制。 Java的较早版本会将整个来宾内存视为自己的内存,并且会很乐意完全使用它-并且至少启动了三个JVM。