2017-01-23 4 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는 정상적인 작동을 위해 인터넷에 액세스 할 필요가 없습니다. 좋은 출발점은 Bare Metal offline provisioning 가이드입니다.

0

--pod-infra-container-imagekubelet에 전달해야합니다 (https://kubernetes.io/docs/admin/kubelet/). 기본값은 gcr.io/google_containers/pause-amd64:3.0이며, gcr.io를 사용할 수 없으므로 시스템에서 성공적으로 꺼내집니다.

은 쉽게 일시 정지가 할당하고 다시 시작을 통해 네트워크 및 IPC 네임 스페이스를 유지하기 위해 전에 컨테이너를 생성하는 컨테이너입니다

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 ... 

개인 레지스트리 당신에 일시 정지 이미지를 전송할 수 있습니다.

+0

minikube는 어떨까요, kubelet은 없습니다. – PMat

0

그들은 인터넷에 액세스 할 필요는 없지만 사용자가 지정하는 개인 레지스트리에 액세스하지 못하도록합니다. https://kubernetes.io/docs/user-guide/images/을 보았습니까? 개인 레지스트리에 액세스하는 방법에 대한 몇 가지 좋은 옵션이 있습니다. https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/도 일부 세부 정보가 있습니다. 우리는 특정 imagePullSecrets를 지정하고 올바르게 작동합니다.