2016-03-15 117 views
2
docker run \ 
    --volume=/:/rootfs:ro \ 
    --volume=/sys:/sys:ro \ 
    --volume=/var/lib/docker/:/var/lib/docker:rw \ 
    --volume=/var/lib/kubelet/:/var/lib/kubelet:rw \ 
    --volume=/var/run:/var/run:rw \ 
    --net=host \ 
    --pid=host \ 
    --privileged=true \ 
    -d \ 
    gcr.io/google_containers/hyperkube-amd64:v${K8S_VERSION} \ 
    /hyperkube kubelet \ 
     --containerized \ 
     --hostname-override="127.0.0.1" \ 
     --address="0.0.0.0" \ 
     --api-servers=http://localhost:8080 \ 
     --config=/etc/kubernetes/manifests \ 
     --cluster-dns=10.0.0.10 \ 
     --cluster-domain=cluster.local \ 
     --allow-privileged=true --v=2 

A curl localhost:8080確認API正在運行。外部訪問kubernetes

但是,試圖與主機的IP來訪問它像curl dockerHostIp:8080失敗:

Failed to connect to ipOfDockerHost port 8080: Connection refused 

我如何可以公開K8S到外面? (碼頭主機是一個Ubuntu服務器) 據我瞭解使用--net =主機應該解決這個問題。但在這種情況下它不起作用。

回答

2

當你開始使用泊塢窗kubernetes,你們兩個型號之間進行選擇:

如果你看看這些文件,你會發現一個區別:--insecure-bind-address is different

當您使用--config=/etc/kubernetes/manifests時,您只需要本地訪問權限。

您應該從--config=/etc/kubernetes/manifests-multi開始。

需要注意的是:

  • 您需要的時候使用手動啓動ETCD --config =的/ etc/kubernetes /體現的多
  • 遵循this post如碼頭工人的支持是不工作的,現在
+0

還有一件事:執行'kubectl get ep'也可能有幫助。 –

+0

@geoHeil。 'kubectl get ep'返回安全端口。你如何獲得證書?現在,我將它們放在由hyperkube啓動的'setup-files.sh'容器中的'/ data'中。但我真的不知道如何翻譯他們... –

+0

[這裏](https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/admin/authentication.md)肯定是很好的文檔起點 –