2017-01-20 11 views
0

私は簡単なMYSQLポッドをMYSQLサービスの背後に置いています。KubernetesサービスのDNS解決が間違ったIPを返す

また、私はMYSQLポッドに接続しようとしているpythonプロセスを実行している別のポッドを持っています。

MYSQLポッドのIPアドレスにPythonポッドから手動で接続しようとすると、すべてがA-OKです。しかし、MYSQL サービスに接続しようとすると、MYSQLに接続できないというエラーが表示されます。

[email protected]:~/k8s/objects$ kubectl describe pod mysqlpod 
Name:  mysqlpod 
Namespace: default 
Node:  minikube/192.168.99.100 
Start Time: Fri, 20 Jan 2017 11:10:50 -0600 
Labels:  <none> 
Status:  Running 
IP:  172.17.0.4 
Controllers: <none> 

[email protected]:~/k8s/objects$ kubectl describe service mysqlservice 
Name:   mysqlservice 
Namespace:  default 
Labels:   <none> 
Selector:  db=mysqllike 
Type:   ClusterIP 
IP:   None 
Port:   <unset> 3306/TCP 
Endpoints:  172.17.0.5:3306 
Session Affinity: None 
No events. 

[email protected]:~/k8s/objects$ kubectl describe pod basic-python-model 
Name:  basic-python-model 
Namespace: default 
Node:  minikube/192.168.99.100 
Start Time: Fri, 20 Jan 2017 12:01:50 -0600 
Labels:  db=mysqllike 
Status:  Running 
IP:  172.17.0.5 
Controllers: <none> 

私はPythonのコンテナに付着しmysqlserviceのnslookupコマンドを実行する場合は、私が実際に間違っ IPを取得しています。上で見たように、mysqlpodのIPは172.17.0.4であり、nslookup mysqlserviceは172.17.0.5に解決されています。

[email protected]:~/k8s/objects$ k8s exec -it basic-python-model bash 
[[email protected] /]# nslookup mysqlservice      
Server:  10.0.0.10 
Address: 10.0.0.10#53 

Name: mysqlservice.default.svc.cluster.local 
Address: 172.17.0.5 

私はkubernetesにかなり新しいんだけど、私は数時間のために、この問題に頭を叩いてきたと私は私が間違ってやっているのか理解できないようです。

答えて

1

これは正確な正しいの動作でしたが、私はポッドを誤って構成しました。

セレクタご奉仕したいポッド(複数可)のラベルと一致している必要がありkubernetesサービスで定義:立ち往生している未来の人々のために

。 IE)私のMySqlService.yamlファイルで、私は「mysqlpod」の名前セレクタを持っている:

apiVersion: v1 
kind: Service 
metadata: 
    name: mysqlservice 
spec: 
    clusterIP: None 
    ports: 
    - port: 3306 
     targetPort: 3306 
    selector: 
    name: mysqlpod 

このように私のMySqlPod.yamlファイルで、私は正確に一致するラベルを必要としています。

kind: Pod 
apiVersion: v1 
metadata: 
    name: mysqlpod 
    labels: 
    name: mysqlpod 
spec: 
    ... 
関連する問題