2017-01-23 69 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