2017-01-23 65 views
0

我有一個關於kubernetes和網絡防火牆規則的問題。我想用防火牆規則來保護我的kubernetes集羣,並想知道工人/主人是否需要訪問互聯網?我正計劃使用位於我的網絡上的私人註冊表,但當工作人員無法訪問互聯網時,我遇到了難題。這裏有一個例子使用私人註冊表時,kubernetes是否需要訪問互聯網?

Name:   foo 
Namespace:  default 
Node:   worker003/192.168.30.1 
Start Time:  Mon, 23 Jan 2017 10:33:07 -0500 
Labels:   <none> 
Status:   Pending 
IP: 
Controllers: <none> 
Containers: 
    foo: 
    Container ID: 
    Image:    registry.company.org/wop_java/app:nginx 
    Image ID: 
    Port: 
    State:    Waiting 
     Reason:   ContainerCreating 
    Ready:    False 
    Restart Count:  0 
    Volume Mounts: 
     /var/run/secrets/kubernetes.io/serviceaccount from default-token-3cg0w (ro) 
    Environment Variables:  <none> 
Conditions: 
    Type   Status 
    Initialized True 
    Ready   False 
    PodScheduled True 
Volumes: 
    default-token-3cg0w: 
    Type:  Secret (a volume populated by a Secret) 
    SecretName: default-token-3cg0w 
QoS Class:  BestEffort 
Tolerations: <none> 
Events: 
    FirstSeen  LastSeen  Count From       SubObjectPath Type  Reason    Message 
    ---------  --------  ----- ----       ------------- -------- ------    ------- 
    5m   5m    1  {default-scheduler }       Normal  Scheduled Successfully assigned foo to worker003 
    4m   1m    4  {kubelet worker003}      Warning  FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/google_containers/pause-amd64:3.0, this may be because there are no credentials on this request. details: (Error response from daemon: {\"message\":\"Get https://gcr.io/v1/_ping: dial tcp 74.125.192.82:443: i/o timeout\"})" 

    3m 3s  9  {kubelet worker003}    Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\"" 

我的問題是,kubernetes是否需要互聯網接入工作?如果是的話,它在哪裏正式記錄?

+0

有趣的是,你是否找到了解決方案(也許甚至從答案)呢? – pagid

回答

0

當所有必需的容器和組件都由私有存儲庫提供時,Kubernetes不需要任何Internet訪問來進行正常操作。一個好的起點是Bare Metal offline provisioning指南。

0

您需要將參數--pod-infra-container-image傳遞給kubelet,如此處所述:https://kubernetes.io/docs/admin/kubelet/。 默認爲gcr.io/google_containers/pause-amd64:3.0,因爲gcr.io不可用,所以在您的機器上無法使用。

您可以將暫停圖像輕鬆傳輸到你的私人註冊表

docker pull gcr.io/google_containers/pause-amd64:3.0 
docker tag gcr.io/google_containers/pause-amd64:3.0 REGISTRY.PRIVATE/google_containers/pause-amd64:3.0 
docker push REGISTRY.PRIVATE/google_containers/pause-amd64:3.0 

# and pass 
kubelet --pod-infra-container-image=REGISTRY.PRIVATE/google_containers/pause-amd64:3.0 ... 

的停頓是爲了分配和保持網絡和IPC的命名空間在重新啓動之前創建的容器的容器。

+0

在minikube上怎麼樣,沒有kubelet – PMat