Ich versuche auch, eine mysql-Serverinstanz auf einer lokalen kubernetes-Installation (1 Master und ein Knoten, beide auf oracle linux) verfügbar zu machen, aber nicht auf den Pod zugreifen zu können .Remote-Zugriff auf Kubernetes-Pod bei lokaler Installation aktivieren
Die pod Konfiguration ist dies:
apiVersion: v1
kind: Pod
metadata:
name: mysql
labels:
name: mysql
spec:
containers:
- resources:
limits :
cpu: 1
image: docker.io/mariadb
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: 123456
ports:
- containerPort: 3306
name: mysql
und der Service-Datei:
apiVersion: v1
kind: Service
metadata:
labels:
name: mysql
name: mysql
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 30306
selector:
name: mysql
Ich kann sehen, dass der Pod läuft:
# kubectl get pod mysql
NAME READY STATUS RESTARTS AGE
mysql 1/1 Running 0 3d
Und der Service ist verbunden mit einem Endpunkt:
# kubectl describe service mysql
Name: mysql
Namespace: default
Labels: name=mysql
Selector: name=mysql
Type: NodePort
IP: 10.254.200.20
Port: <unset> 3306/TCP
NodePort: <unset> 30306/TCP
Endpoints: 11.0.14.2:3306
Session Affinity: None
No events.
Ich kann auf Netstat sehen, dass Kube-Proxy auf Port 30306 für alle eingehenden Verbindungen abgehört.
tcp6 6 0 :::30306 :::* LISTEN 53039/kube-proxy
Aber irgendwie bekomme ich keine Antwort von MySQL sogar auf dem localhost.
# telnet localhost 30306
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Während einer normalen MySQL-Installation reagiert mit etwas von den folgenden:
$ telnet [REDACTED] 3306
Trying [REDACTED]...
Connected to [REDACTED].
Escape character is '^]'.
N
[REDACTED]-log�gw&TS(gS�X]G/Q,(#uIJwmysql_native_password^]
Beachten Sie die mysql in der letzten Zeile Teil.
Ein letzter Punkt gibt es diese kubectl Ausgabe:
$ kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 9d
mysql 10.254.200.20 nodes 3306/TCP 1h
Aber ich verstehe nicht, was „Knoten“ bedeutet in der Spalte EXTERNAL-IP.
Also was ich will, ist, den Zugriff auf den MySQL-Dienst über die Master-IP zu öffnen (vorzugsweise). Wie mache ich das und was mache ich falsch?
Aus irgendeinem Grund störte die Firewall mit Kubernetes-Proxy, ich konnte über Telnet auf dem Port verbinden, aber ich bekam keine Antwort vom Server. Ich bin mir immer noch nicht sicher, wie man Clients dazu bringt, sich mit einem einzigen Server zu verbinden, der alle Verbindungen zu den Minions transparent leitet. –