2017-09-15 9 views
0

オフラインクラスター(マシンはインターネットにアクセスできません)で、ドッキング可能なドッキング画像を使用してドッキング画像を展開しています。 私のサーバーはCentos7です。 私はマシンに安全でないドッカーレジストリを設定しました。私たちは環境を変えようとしています。私はコンテナの引き取りを管理するためにクベネットを設置しています。オフラインクラスタのローカルイメージからコンテナを実行できない不安定なレジストリを取得できません。

iはkubernetesをインストールするには、このガイドに従ってください:https://severalnines.com/blog/installing-kubernetes-cluster-minions-centos7-manage-pods-services

をインストールした後、私はテストポッドを起動しようとしました。

apiVersion: v1 
    kind: Pod 
    metadata: 
     name: nginx 
    spec: 
     containers: 
     - name: nginx 
     image: [my_registry_addr]:[my_registry_port]/nginx:v1 

     ports: 
     - containerPort: 80 

私が間違っていたものに多くの情報を取得するために説明kubectl使用:ここここ

kubectl -f create nginx.yml 

YMLで起動する、ポッド用YMLある

Name:  nginx 
    Namespace: default 
    Node:  [my node] 
    Start Time: Fri, 15 Sep 2017 11:29:05 +0200 
    Labels:  <none> 
    Status:  Pending 
    IP:  
    Controllers: <none> 
    Containers: 
     nginx: 
     Container ID:  
     Image:   [my_registry_addr]:[my_registry_port]/nginx:v1 
     Image ID:   
     Port:   80/TCP 
     State:   Waiting 
      Reason:   ContainerCreating 
     Ready:   False 
     Restart Count:  0 
     Volume Mounts:  <none> 
     Environment Variables: <none> 
    Conditions: 
     Type  Status 
     Initialized True 
     Ready  False 
     PodScheduled True 
    No volumes. 
    QoS Class: BestEffort 
    Tolerations: <none> 
    Events: 
     FirstSeen LastSeen Count From    SubObjectPath   Type  Reason  Message 
     --------- -------- ----- ----    ------------- -------- ------  ------- 
     2m  2m  1 {default-scheduler }    Normal  Scheduled Successfully assigned nginx to [my kubernet node] 
     1m  1m  2 {kubelet [my kubernet node]}   Warning  FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "Error while pulling image: Get https://index.docker.io/v1/repositories/library/[my_registry_addr]/images: dial tcp: lookup index.docker.io on [kubernet_master_ip]:53: server misbehaving" 

     54s 54s 1 {kubelet [my kubernet node]}  Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"[my_registry_addr]:[my_registry_port]\"" 

     8s 8s 1 {kubelet [my kubernet node]}  Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/[my_registry_addr]/images. You may want to check your internet connection or if you are behind a proxy." 

、その後、私は自分のノードに行き、journalctl -xeを使います。

sept. 15 11:22:02 [my_node_ip] dockerd-current[9861]: time="2017-09-15T11:22:02.350930396+02:00" level=info msg="{Action=create, LoginUID=4294967295, PID=11555}" 
    sept. 15 11:22:17 [my_node_ip] dockerd-current[9861]: time="2017-09-15T11:22:17.351536727+02:00" level=warning msg="Error getting v2 registry: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)" 
    sept. 15 11:22:17 [my_node_ip] dockerd-current[9861]: time="2017-09-15T11:22:17.351606330+02:00" level=error msg="Attempting next endpoint for pull after error: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)" 
    sept. 15 11:22:32 [my_node_ip] dockerd-current[9861]: time="2017-09-15T11:22:32.353946452+02:00" level=error msg="Not continuing with pull after error: Error while pulling image: Get https://index.docker.io/v1/repositories/library/[my_registry_ip]/images: dial tcp: lookup index.docker.io on [kubernet_master_ip]:53: server misbehaving" 
    sept. 15 11:22:32 [my_node_ip] kubelet[11555]: E0915 11:22:32.354309 11555 docker_manager.go:2161] Failed to create pod infra container: ErrImagePull; Skipping pod "nginx_default(8b5c40e5-99f4-11e7-98db-f8bc12456ee4)": Error while pulling image: Get https://index.docker.io/v1/repositories/library/[my_registry_ip]/images: dial tcp: lookup index.docker.io on [kubernet_master_ip]:53: server misbehaving 
    sept. 15 11:22:32 [my_node_ip] kubelet[11555]: E0915 11:22:32.354390 11555 pod_workers.go:184] Error syncing pod 8b5c40e5-99f4-11e7-98db-f8bc12456ee4, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "Error while pulling image: Get https://index.docker.io/v1/repositories/library/[my_registry_ip]/images: dial tcp: lookup index.docker.io on [kubernet_master_ip]:53: server misbehaving" 
    sept. 15 11:22:44 [my_node_ip] dockerd-current[9861]: time="2017-09-15T11:22:44.350708175+02:00" level=error msg="Handler for GET /v1.24/images/[my_registry_ip]:[my_registry_port]/json returned error: No such image: [my_registry_ip]:[my_registry_port]" 

私はドッカーの構成が良いと確信しています。なぜなら、私は毎日、それを使用しています。

ドッキングウィンドウのバージョンは、kubernetバージョン1.12.6である1.5.2

で誰かが私は今何ができるかのいくつかの洞察力を持っていますか?私はこの用法のための設定キーを見つけませんでした。

私は、引っ張りが失敗しているのを見たとき、私は手動ですべてのノード上の画像を引っ張ります。私はkubernetesがデフォルトとして引っ張ってみてください、と設定することになることを確実にするためにタグをつけ、「imagePullPolicyを:IfNotPresentを」

+0

プライベートレジストリは正式であるか、または正式でありますか?また、これが役立つかどうかを確認してくださいhttps://blog.cloudhelix.io/using-a-private-docker-registry-with-kubernetes-f8d5f6b8f646 –

+0

Kubernetesはあなたのプライベートレジストリからイメージをプルする方法を知らないようですhttps ://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/およびhttps://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry –

+0

認証なしのレジストリです。 httpを使用すると安全ではありません。自分のノード上のdaemon.jsonファイルを編集してレジストリから引き出すことができます。 –

答えて

0

に構文をドッキングウィンドウの画像を指定するためのものです:

[docker_registry]/[image_name]:[image_tag] 

マニフェストファイルでは、あなたが持っています":"を使用して、ドッカーリポジトリホストとリポジトリがリッスンしているポートを分離します。私が推測するドッキングウィンドウプライベートレジストリのデフォルトポートは、そうすることによって、あなたのドッキングウィンドウのレジストリにワーカーノードからのネットワーク接続を確認し、また、

Image:   [my_registry_addr]:[my_registry_port]/nginx:v1 

から

Image:   [my_registry_addr]/nginx:v1 

にあなたのイメージの宣言を変更する5000 ですping。

ping [my_registry_addr] 

あなたはまだポート443がレジストリに開かれているかどうかを確認したい場合は、ホスト実行中のドッキングウィンドウのレジストリにそのポートでTCPチェックを行うことができますに

curl telnet://[my_registry_addr]:443 

お役に立てば幸いです。

+0

私のレジストリは安全ではなく、httpを使って設定しています。イメージタグとプルは大丈夫です、私はドッカーcomandsを使用してプルしてプッシュすることができます。私がサーバアドレスだけを使ってタグを付けると、dockerは彼にもう連絡することができません(私のレジストリはdaemon.jsonファイルの[addr:port]で定義されています)。ポート443での接続に失敗しましたが、これは正常だと思います。そのポートではサービスがありません。 –

+0

しかし、問題はそれ以上です。なぜなら、私が使用しているイメージ "nginx:v1"は、すべてのノードにローカルに存在していて、クベールネットはそれをまだインスタンス化できません。 –

0

私はついにこの問題を見つけました。

動作させるには、Kubernetesにポーズコンテナが必要です。 Kubernetesはインターネット上のポーズコンテナを見つけようとしていました。

レジストリにカスタムポーズコンテナを配備しました。このイメージにkubernetes pauseコンテナを設定しました。

その後、kubernetesは魅力的な働きをしています。