我有一个由 Rancher Desktop 创建的本地 k3s Kubernetes 集群(禁用 Traefik)。
我正在尝试根据本教程使用 Ingress 方式设置 Kafka,以使其可供在 Kubernetes 外部运行的客户端访问。
我通过安装了ingress-nginx
helm upgrade \
ingress-nginx \
ingress-nginx \
--install \
--repo=https://kubernetes.github.io/ingress-nginx \
--namespace=ingress-nginx \
--create-namespace \
--values=my-values.yaml
my-values.yaml
controller:
extraArgs:
enable-ssl-passthrough: true
我通过以下方式获得了我的集群 IP
192.168.1.149
:
➜ kubectl get node lima-rancher-desktop -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
lima-rancher-desktop Ready control-plane,master 108m v1.26.3+k3s1 192.168.5.15 192.168.1.149 Alpine Linux v3.16 5.15.96-0-virt containerd://1.6.8
然后我通过以下方式部署我的 Kafka:
kubectl create namespace hm-kafka
kubectl apply --filename="https://strimzi.io/install/latest?namespace=hm-kafka" --namespace=hm-kafka
kubectl apply --filename=my-kafka-persistent.yaml --namespace=hm-kafka
my-kafka-persistent.yaml(基于kafka-persistent.yaml):
---
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: hm-kafka
spec:
kafka:
version: 3.4.0
replicas: 3
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
- name: external
port: 9094
type: ingress
tls: true
configuration:
bootstrap:
host: kafka-bootstrap.192.168.1.149.nip.io
brokers:
- broker: 0
host: kafka-broker-0.192.168.1.149.nip.io
- broker: 1
host: kafka-broker-1.192.168.1.149.nip.io
- broker: 2
host: kafka-broker-2.192.168.1.149.nip.io
config:
offsets.topic.replication.factor: 3
transaction.state.log.replication.factor: 3
transaction.state.log.min.isr: 2
default.replication.factor: 3
min.insync.replicas: 2
inter.broker.protocol.version: "3.4"
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 100Gi
deleteClaim: false
zookeeper:
replicas: 3
storage:
type: persistent-claim
size: 100Gi
deleteClaim: false
entityOperator:
topicOperator: {}
userOperator: {}
但是,这次没有创建Kafka broker。
当我检查ingress-nginx日志时,它显示:
➜ kubectl logs ingress-nginx-controller-6598bff54d-sffqt -n ingress-nginx
-------------------------------------------------------------------------------
NGINX Ingress controller
Release: v1.7.0
Build: 72ff21ed9e26cb969052c753633049ba8a87ecf9
Repository: https://github.com/kubernetes/ingress-nginx
nginx version: nginx/1.21.6
-------------------------------------------------------------------------------
W0415 05:07:19.264102 7 controller.go:279] ignoring ingress hm-kafka-kafka-bootstrap in hm-kafka based on annotation : ingress does not contain a valid IngressClass
I0415 05:07:19.264118 7 main.go:100] "successfully validated configuration, accepting" ingress="hm-kafka/hm-kafka-kafka-bootstrap"
W0415 05:07:19.264254 7 controller.go:279] ignoring ingress hm-kafka-kafka-0 in hm-kafka based on annotation : ingress does not contain a valid IngressClass
I0415 05:07:19.264262 7 main.go:100] "successfully validated configuration, accepting" ingress="hm-kafka/hm-kafka-kafka-0"
W0415 05:07:19.264344 7 controller.go:279] ignoring ingress hm-kafka-kafka-1 in hm-kafka based on annotation : ingress does not contain a valid IngressClass
W0415 05:07:19.264254 7 controller.go:279] ignoring ingress hm-kafka-kafka-2 in hm-kafka based on annotation : ingress does not contain a valid IngressClass
I0415 05:07:19.264351 7 main.go:100] "successfully validated configuration, accepting" ingress="hm-kafka/hm-kafka-kafka-1"
I0415 05:07:19.264354 7 main.go:100] "successfully validated configuration, accepting" ingress="hm-kafka/hm-kafka-kafka-2"
I0415 05:07:19.273788 7 store.go:429] "Ignoring ingress because of error while validating ingress class" ingress="hm-kafka/hm-kafka-kafka-1" error="ingress does not contain a valid IngressClass"
I0415 05:07:19.274943 7 store.go:429] "Ignoring ingress because of error while validating ingress class" ingress="hm-kafka/hm-kafka-kafka-2" error="ingress does not contain a valid IngressClass"
I0415 05:07:19.275020 7 store.go:429] "Ignoring ingress because of error while validating ingress class" ingress="hm-kafka/hm-kafka-kafka-0" error="ingress does not contain a valid IngressClass"
I0415 05:07:19.275129 7 store.go:429] "Ignoring ingress because of error while validating ingress class" ingress="hm-kafka/hm-kafka-kafka-bootstrap" error="ingress does not contain a valid IngressClass"
我尝试将 my-kafka-persistent.yaml 更新为
# ...
- name: external
port: 9094
type: ingress
tls: true
configuration:
bootstrap:
host: kafka-bootstrap.192.168.1.149.nip.io
annotations:
kubernetes.io/ingress.class: nginx
brokers:
- broker: 0
host: kafka-broker-0.192.168.1.149.nip.io
annotations:
kubernetes.io/ingress.class: nginx
- broker: 1
host: kafka-broker-1.192.168.1.149.nip.io
annotations:
kubernetes.io/ingress.class: nginx
- broker: 2
host: kafka-broker-2.192.168.1.149.nip.io
annotations:
kubernetes.io/ingress.class: nginx
当我再次部署时,它显示错误:
➜ kubectl apply --filename=kubernetes/manifests/hm-kafka/kafka-persistent.yaml --namespace=hm-kafka
The request is invalid: patch: Invalid value: "{\"apiVersion\":\"kafka.strimzi.io/v1beta2\",\"kind\":\"Kafka\",\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"kafka.strimzi.io/v1beta2\\\",\\\"kind\\\":\\\"Kafka\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"hm-kafka\\\",\\\"namespace\\\":\\\"hm-kafka\\\"},\\\"spec\\\":{\\\"entityOperator\\\":{\\\"topicOperator\\\":{},\\\"userOperator\\\":{}},\\\"kafka\\\":{\\\"config\\\":{\\\"default.replication.factor\\\":3,\\\"inter.broker.protocol.version\\\":\\\"3.4\\\",\\\"min.insync.replicas\\\":2,\\\"offsets.topic.replication.factor\\\":3,\\\"transaction.state.log.min.isr\\\":2,\\\"transaction.state.log.replication.factor\\\":3},\\\"kubernetes.io/ingress.class\\\":\\\"nginx\\\",\\\"listeners\\\":[{\\\"name\\\":\\\"plain\\\",\\\"port\\\":9092,\\\"tls\\\":false,\\\"type\\\":\\\"internal\\\"},{\\\"name\\\":\\\"tls\\\",\\\"port\\\":9093,\\\"tls\\\":true,\\\"type\\\":\\\"internal\\\"},{\\\"configuration\\\":{\\\"bootstrap\\\":{\\\"annotations\\\":{\\\"kubernetes.io/ingress.class\\\":\\\"nginx\\\"},\\\"host\\\":\\\"kafka-bootstrap.192.168.1.149.nip.io\\\"},\\\"brokers\\\":[{\\\"annotations\\\":{\\\"kubernetes.io/ingress.class\\\":\\\"nginx\\\"},\\\"broker\\\":0,\\\"host\\\":\\\"kafka-broker-0.192.168.1.149.nip.io\\\"},{\\\"annotations\\\":{\\\"kubernetes.io/ingress.class\\\":\\\"nginx\\\"},\\\"broker\\\":1,\\\"host\\\":\\\"kafka-broker-1.192.168.1.149.nip.io\\\"},{\\\"annotations\\\":{\\\"kubernetes.io/ingress.class\\\":\\\"nginx\\\"},\\\"broker\\\":2,\\\"host\\\":\\\"kafka-broker-2.192.168.1.149.nip.io\\\"}]},\\\"name\\\":\\\"external\\\",\\\"port\\\":9094,\\\"tls\\\":true,\\\"type\\\":\\\"ingress\\\"}],\\\"replicas\\\":3,\\\"storage\\\":{\\\"type\\\":\\\"jbod\\\",\\\"volumes\\\":[{\\\"deleteClaim\\\":false,\\\"id\\\":0,\\\"size\\\":\\\"100Gi\\\",\\\"type\\\":\\\"persistent-claim\\\"}]},\\\"version\\\":\\\"3.4.0\\\"},\\\"zookeeper\\\":{\\\"replicas\\\":3,\\\"storage\\\":{\\\"deleteClaim\\\":false,\\\"size\\\":\\\"100Gi\\\",\\\"type\\\":\\\"persistent-claim\\\"}}}}\\n\"},\"creationTimestamp\":\"2023-04-15T05:06:03Z\",\"generation\":1,\"managedFields\":[{\"apiVersion\":\"kafka.strimzi.io/v1beta2\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:kubectl.kubernetes.io/last-applied-configuration\":{}}},\"f:spec\":{\".\":{},\"f:entityOperator\":{\".\":{},\"f:topicOperator\":{},\"f:userOperator\":{}},\"f:kafka\":{\".\":{},\"f:config\":{\".\":{},\"f:default.replication.factor\":{},\"f:inter.broker.protocol.version\":{},\"f:min.insync.replicas\":{},\"f:offsets.topic.replication.factor\":{},\"f:transaction.state.log.min.isr\":{},\"f:transaction.state.log.replication.factor\":{}},\"f:listeners\":{},\"f:replicas\":{},\"f:storage\":{\".\":{},\"f:type\":{},\"f:volumes\":{}},\"f:version\":{}},\"f:zookeeper\":{\".\":{},\"f:replicas\":{},\"f:storage\":{\".\":{},\"f:deleteClaim\":{},\"f:size\":{},\"f:type\":{}}}}},\"manager\":\"kubectl-client-side-apply\",\"operation\":\"Update\",\"time\":\"2023-04-15T05:06:03Z\"},{\"apiVersion\":\"kafka.strimzi.io/v1beta2\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:status\":{\".\":{},\"f:conditions\":{},\"f:observedGeneration\":{}}},\"manager\":\"strimzi-cluster-operator\",\"operation\":\"Update\",\"subresource\":\"status\",\"time\":\"2023-04-15T05:12:19Z\"}],\"name\":\"hm-kafka\",\"namespace\":\"hm-kafka\",\"resourceVersion\":\"7024\",\"uid\":\"68c256b7-eab5-4ce5-986e-f83726b8b825\"},\"spec\":{\"entityOperator\":{\"topicOperator\":{},\"userOperator\":{}},\"kafka\":{\"config\":{\"default.replication.factor\":3,\"inter.broker.protocol.version\":\"3.4\",\"min.insync.replicas\":2,\"offsets.topic.replication.factor\":3,\"transaction.state.log.min.isr\":2,\"transaction.state.log.replication.factor\":3},\"kubernetes.io/ingress.class\":\"nginx\",\"listeners\":[{\"name\":\"plain\",\"port\":9092,\"tls\":false,\"type\":\"internal\"},{\"name\":\"tls\",\"port\":9093,\"tls\":true,\"type\":\"internal\"},{\"configuration\":{\"bootstrap\":{\"annotations\":{\"kubernetes.io/ingress.class\":\"nginx\"},\"host\":\"kafka-bootstrap.192.168.1.149.nip.io\"},\"brokers\":[{\"annotations\":{\"kubernetes.io/ingress.class\":\"nginx\"},\"broker\":0,\"host\":\"kafka-broker-0.192.168.1.149.nip.io\"},{\"annotations\":{\"kubernetes.io/ingress.class\":\"nginx\"},\"broker\":1,\"host\":\"kafka-broker-1.192.168.1.149.nip.io\"},{\"annotations\":{\"kubernetes.io/ingress.class\":\"nginx\"},\"broker\":2,\"host\":\"kafka-broker-2.192.168.1.149.nip.io\"}]},\"name\":\"external\",\"port\":9094,\"tls\":true,\"type\":\"ingress\"}],\"replicas\":3,\"storage\":{\"type\":\"jbod\",\"volumes\":[{\"deleteClaim\":false,\"id\":0,\"size\":\"100Gi\",\"type\":\"persistent-claim\"}]},\"version\":\"3.4.0\"},\"zookeeper\":{\"replicas\":3,\"storage\":{\"deleteClaim\":false,\"size\":\"100Gi\",\"type\":\"persistent-claim\"}}},\"status\":{\"conditions\":[{\"lastTransitionTime\":\"2023-04-15T05:12:19.304453964Z\",\"message\":\"Exceeded timeout of 300000ms while waiting for Ingress resource hm-kafka-kafka-bootstrap in namespace hm-kafka to be addressable\",\"reason\":\"TimeoutException\",\"status\":\"True\",\"type\":\"NotReady\"}],\"observedGeneration\":1}}": strict decoding error: unknown field "spec.kafka.kubernetes.io/ingress.class"
注意
严格解码错误:未知字段“spec.kafka.kubernetes.io/ingress.class”
里面。
然后我发现并阅读了this这似乎是同样的错误并得到了解决,但是里面没有提到最终配置。这是一个副本:
“在配置部分配置Ingress类”是什么意思?任何指南将不胜感激,谢谢!