我使用kubernetes 1.3.0設置kubernetes環境,並在同一臺主機上運行master和node,我運行一個RC的tomcat web應用程序,一個docker服務,運行狀況良好,可以通過curl命令通過內部網絡訪問服務,但是當我嘗試使用公共IP從Internet訪問服務時,它是失敗的。無法通過外部網絡訪問kubernetes服務
的RC配置爲:
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 2
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: "mysql"
- name: MYSQL_SERVICE_PORT
value: '3306'
的服務配置是:
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: myweb
正如你看到的,服務監聽30001端口,當端口通過Kubernetes服務聽,就不能通過Internet訪問,但是當我在同一主機上使用 nc -l 30001
命令時,它可以通過Internet訪問,這意味着系統層的網絡配置很好。
對於主機的iptables設置,我接受所有連接,但問題仍然出現。
那麼爲什麼我可以通過kubernetes服務訪問它?有沒有我想念的配置?
謝謝,夥計們。我不這樣做,因爲我發現這是kubernetes的先進技巧,我將在未來的研究中嘗試它。但是我做了類似於你用nginx proxypass所說的那樣,它可以工作,應用程序可以被訪問。 –