
statefulset.kubernetes.io/pod-name label을 포함해서 생성되기 때문에 selector를 사용해서 연결

kubectl get service my-cluster-kafka-external-bootstrap -o=jsonpath='{.spec.ports[0].nodePort}{"\n"}' 
kubectl get node node-name -o=jsonpath='{range .status.addresses[*]}{.type}{"\t"}{.address}{"\n"}' 
bin/kafka-console-producer.sh --broker-list <node-address>:<node-port> --topic <your-topic> 
[2019-04-22 21:04:11,976] WARN [Consumer clientId=consumer-1, groupId=console-consumer-42133] Connection to node 1 (/10.0.2.15:31301) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
or
[2019-04-22 21:11:37,295] WARN [Producer clientId=console-producer] Connection to node -1 (/10.0.2.15:31488) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
DNS name과 IP는 internal하고 외부 client가 접속하지 못해서 발생하는 이슈
production grade clusters와 local development tools(Minikube or Minishift)에서 주로 발생한다.

10.0.11.69kubectl get node <node-name> -o=jsonpath='{range .status.addresses[*]}{.type}{"\t"}{.address}{"\n"}'

InternalIP 10.0.11.69kubectl exec my-cluster-kafka-0 -c kafka -it -- cat /tmp/strimzi.properties | grep advertised 
advertised.listeners=CONTROLPLANE-9090://kafka-cluster-kafka-0.kafka-cluster-kafka-brokers.kafka.svc:9090,REPLICATION-9091://kafka-cluster-kafka-0.kafka-cluster-kafka-brokers.kafka.svc:9091,PLAIN-9092://kafka-cluster-kafka-0.kafka-cluster-kafka-brokers.kafka.svc:9092,TLS-9093://kafka-cluster-kafka-0.kafka-cluster-kafka-brokers.kafka.svc:9093,EXTERNAL-9094://10.0.11.69:31634# ...
listeners:
# ...
- name: external
port: 9094
type: nodeport
tls: false
configuration:
brokers:
- broker: 0
advertisedHost: XXX.XXX.XXX.XXX
- broker: 1
advertisedHost: XXX.XXX.XXX.XXX
- broker: 2
advertisedHost: XXX.XXX.XXX.XXX
# ...
telnet / ping 
default node port number는 k8s controller에 의해서 자동 지정된다.# ...
listeners:
# ...
- name: external
port: 9094
type: nodeport
tls: true
authentication:
type: tls
configuration:
bootstrap:
nodePort: 32100
brokers:
- broker: 0
nodePort: 32000
- broker: 1
nodePort: 32001
- broker: 2
nodePort: 32002
# ...
# ...
listeners:
# ...
- name: external
port: 9094
type: nodeport
tls: true
authentication:
type: tls
configuration:
brokers:
- broker: 0
advertisedHost: example.hostname.0
advertisedPort: 12340
- broker: 1
advertisedHost: example.hostname.1
advertisedPort: 12341
- broker: 2
advertisedHost: example.hostname.2
advertisedPort: 12342
# ...
advertisedHost : can be DNS name or IP address