로컬 kubernetes 설치 (1 개의 마스터 및 1 개 노드, 둘 다 oracle Linux)에서 mysql 서버 인스턴스를 노출하려고하지만 포드에 액세스 할 수 없습니다. .로컬 설치시 kubernetes pod에 대한 원격 액세스 활성화
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
그리고 서비스 파일 :
apiVersion: v1
kind: Service
metadata:
labels:
name: mysql
name: mysql
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 30306
selector:
name: mysql
내가 포드가 실행되는 것을 볼 수 있습니다
포드 구성이 있습니다
# kubectl get pod mysql
NAME READY STATUS RESTARTS AGE
mysql 1/1 Running 0 3d
을 그리고 서비스입니다 엔드 포인트에 연결 :
# 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.
kube-proxy가 들어오는 모든 연결에 대해 포트 30306에서 수신 대기 중임을 netstat에서 확인할 수 있습니다.
tcp6 6 0 :::30306 :::* LISTEN 53039/kube-proxy
하지만 어떻게 든 로컬 호스트에서도 mysql의 응답을받지 못합니다.
$ telnet [REDACTED] 3306
Trying [REDACTED]...
Connected to [REDACTED].
Escape character is '^]'.
N
[REDACTED]-log�gw&TS(gS�X]G/Q,(#uIJwmysql_native_password^]
주의 마지막 줄에서 MySQL의 부분 : 일반 MySQL 설치 반면
# telnet localhost 30306
Trying ::1...
Connected to localhost.
Escape character is '^]'.
는 다음 중 무엇인가로 응답합니다. 마지막 주에
이 kubectl 출력이 :
$ 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
하지만 "노드가"외부-IP 열에서 무엇을 의미하는지 이해가 안 돼요.
그래서 내가 원하는 것은 마스터 IP (선호)를 통해 mysql 서비스에 대한 액세스를 여는 것입니다. 어떻게해야합니까? 그리고 내가 뭘 잘못하고 있습니까?
방화벽이 kubernetes-proxy를 방해하고 있었기 때문에 포트에서 텔넷을 통해 연결할 수 있었지만 서버에서 응답이 없습니다. 클라이언트를 단일 서버에 연결하는 방법을 아직 모르는 중입니다.이 서버는 모든 연결을 미니언에게 라우팅합니다. –