2017-11-09 22 views
0

私は現在、弊社のsquidサーバーをドッキングしたバージョンに移行しようとしていますが、私はKubernetesと連携するのに苦労しています。Kubectlは実行時にコンテナを再起動し続けます

"ドッカーの実行"を実行すると完全に正常に動作するドッカー画像を構築しました。 完全ドッカーRunコマンドは次のとおりです。

sudo docker run -d -i -t --privileged --volume=/proc/sys/net/ipv4/ip_nonlocal_bind:/var/proc/sys/net/ipv4/ip_nonlocal_bind --net=host --cap-add=SYS_MODULE --cap-add=NET_ADMIN --cap-add=NET_RAW -v /dev:/dev -v /lib/modules:/lib/modules -p80:80 -p8080:8080 -p53:53/udp -p5353:5353/udp -p5666:5666/udp -p4500:4500/udp -p500:500/udp -p3306:3306 --name=edge crossense/edge:latest /bin/bash

私はKubernetes付のイメージを実行しようとすると、のようなもので:Kubernetesは、コンテナを取得しようとするよう

kubectl run --image=crossense/edge:latest --port=80 --port=8080 --port=53 --port=5353 --port=5666 --port=4500 --port=500 --port=3306 edge

は思わ実行していますが、成功していません...

$kubectl get po 
NAME   READY  REASON RESTARTS AGE 
edge-sz7wp 0/1  Running 10   15m 

$kubectl describe pod edgeコマンドは私にこれらの多くを与えます:

Thu, 09 Nov 2017 17:13:05 +0000 Thu, 09 Nov 2017 17:13:05 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id abcc2ff25a624a998871e02bcb62d42d6f39e9db0a39f601efa4d357dd8334aa 
Thu, 09 Nov 2017 17:13:15 +0000 Thu, 09 Nov 2017 17:13:15 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id 878778836bd3cc25bdf1e3b9cc2f2f6fa22b75b938a481172f08a6ec50571582 
Thu, 09 Nov 2017 17:13:15 +0000 Thu, 09 Nov 2017 17:13:15 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id 878778836bd3cc25bdf1e3b9cc2f2f6fa22b75b938a481172f08a6ec50571582 
Thu, 09 Nov 2017 17:13:25 +0000 Thu, 09 Nov 2017 17:13:25 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id aa51e94536216b905ff9ba07951fedbc0007476b55dfdb2e5106418fb6aee05c 
Thu, 09 Nov 2017 17:13:25 +0000 Thu, 09 Nov 2017 17:13:25 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id aa51e94536216b905ff9ba07951fedbc0007476b55dfdb2e5106418fb6aee05c 
Thu, 09 Nov 2017 17:13:35 +0000 Thu, 09 Nov 2017 17:13:35 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id f4661e5ea33471cd1ba30816b40c8ba2d204fa22509b973da4af6eedb64c592e 
Thu, 09 Nov 2017 17:13:35 +0000 Thu, 09 Nov 2017 17:13:35 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id f4661e5ea33471cd1ba30816b40c8ba2d204fa22509b973da4af6eedb64c592e 
Thu, 09 Nov 2017 17:13:45 +0000 Thu, 09 Nov 2017 17:13:45 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id 75f83dcb9b4f8af5134d6fd2edcd9342ecf56111e132a45f4e9787e83466e28b 
Thu, 09 Nov 2017 17:13:45 +0000 Thu, 09 Nov 2017 17:13:45 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id 75f83dcb9b4f8af5134d6fd2edcd9342ecf56111e132a45f4e9787e83466e28b 
Thu, 09 Nov 2017 17:13:55 +0000 Thu, 09 Nov 2017 17:13:55 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id c9d0535b3962ec9da29c068dbb0a6b64426a5ac3e52f72e79bcbaf03c9f3d403 
Thu, 09 Nov 2017 17:13:55 +0000 Thu, 09 Nov 2017 17:13:55 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id c9d0535b3962ec9da29c068dbb0a6b64426a5ac3e52f72e79bcbaf03c9f3d403 
Thu, 09 Nov 2017 17:14:05 +0000 Thu, 09 Nov 2017 17:14:05 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id 579f4428e9804404bd746cceee88bb6c73066a33263202bb5f1eb15f6ff26d7b 
Thu, 09 Nov 2017 17:14:05 +0000 Thu, 09 Nov 2017 17:14:05 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id 579f4428e9804404bd746cceee88bb6c73066a33263202bb5f1eb15f6ff26d7b 
Thu, 09 Nov 2017 17:14:15 +0000 Thu, 09 Nov 2017 17:14:15 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id d36b2c9ddf0b1a05d86b43d2a92eb3c00ae92d00e155d5a1be1da8e2682f901b 
Thu, 09 Nov 2017 17:14:15 +0000 Thu, 09 Nov 2017 17:14:15 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id d36b2c9ddf0b1a05d86b43d2a92eb3c00ae92d00e155d5a1be1da8e2682f901b 
Thu, 09 Nov 2017 17:14:25 +0000 Thu, 09 Nov 2017 17:14:25 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id 2d7b24537414f5e6f2981bf5f01596b19ea1abdb0eb4b81508fc7f44e8c34609 
Thu, 09 Nov 2017 17:14:25 +0000 Thu, 09 Nov 2017 17:14:25 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id 2d7b24537414f5e6f2981bf5f01596b19ea1abdb0eb4b81508fc7f44e8c34609 
Thu, 09 Nov 2017 17:14:35 +0000 Thu, 09 Nov 2017 17:14:35 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id fdae44c599b77d44839e4897b750203c183001a6053c926432ef5a3c7f4deb38 
Thu, 09 Nov 2017 17:14:35 +0000 Thu, 09 Nov 2017 17:14:35 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id fdae44c599b77d44839e4897b750203c183001a6053c926432ef5a3c7f4deb38 
Thu, 09 Nov 2017 17:14:45 +0000 Thu, 09 Nov 2017 17:14:45 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id 544351dda838d698e3bc125840edb6ad71cd0165a970cce46825df03b826eb38 
Thu, 09 Nov 2017 17:14:45 +0000 Thu, 09 Nov 2017 17:14:45 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id 544351dda838d698e3bc125840edb6ad71cd0165a970cce46825df03b826eb38 
Thu, 09 Nov 2017 17:14:55 +0000 Thu, 09 Nov 2017 17:14:55 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   created  Created with docker id 00fe4c286c1cc9b905c9c0927f82b39d45d41295a9dd0852131bba087bb19610 
Thu, 09 Nov 2017 17:14:55 +0000 Thu, 09 Nov 2017 17:14:55 +0000 1 {kubelet 127.0.0.1} spec.containers{edge}   started  Started with docker id 00fe4c286c1cc9b905c9c0927f82b39d45d41295a9dd0852131bba087bb19610 

何か助けていただければ幸いです!

+1

また、kubectl logs -f edge'の出力を共有できますか? –

+0

返事ありがとう! 'kubectl logs -f edge'のように見えません... :( –

答えて

0

答えが見つからない人は、 ポッドを再起動する理由は、実行したコマンドがコード0(正常終了)で終了したためです。私の場合は

私のポッドの設定で指定されているように、私は.yamlファイル、エントリポイントのコマンドとして/ binに/ bashのを実行していた:解決策は単純に非出コマンドを追加しました

apiVersion: v1 
kind: Pod 
metadata: 
name: edge 
spec: 
containers: 
    - name: edge 
    image: "crossense/edge:production" 
    command: 
     - /bin/bash 
    securityContext: 
     capabilities: 
     add: 
      - NET_ADMIN 
      - SYS_MODULE 
      - NET_RAW 
    volumeMounts: 
     - name: ip-nonlocal-bind 
     mountPath: /host/proc/sys/net/ipv4 
     - name: dev 
     mountPath: /host/dev 
     - name: modules 
     mountPath: /host/lib/modules 

.... 

entrypoint。これは一例であり、今後の学習のためのフォアグラウンド上の任意のプロセスの実行または単に /binに/スリープ

することができ、私の最後のポッドの設定ファイルはこのように見えた:

apiVersion: v1 
kind: Pod 
metadata: 
name: edge 
spec: 
hostNetwork: true 
containers: 
    - name: edge 
    image: "crossense/edge:production" 
    command: ["/bin/bash", "-c"] 
    args: ["service rsyslog restart; service proxysql start; service mongodb start; service pdns-recursor start; service supervisor start; service danted start; touch /var/run/squid.pid; chown proxy /var/run/squid.pid; service squid restart; service ipsec start; /sbin/iptables-restore < /etc/iptables/rules.v4; sleep infinity"] 
    securityContext: 
     privileged: true 
     capabilities: 
     add: 
      - NET_ADMIN 
      - SYS_MODULE 
      - NET_RAW 
    volumeMounts: 
     - mountPath: /dev/shm 
     name: dshm 
     - name: ip-nonlocal-bind 
     mountPath: /host/proc/sys/net/ipv4 
     - name: dev 
     mountPath: /dev 
     - name: modules 
     mountPath: /lib/modules 
    ports: 
     - containerPort: 80 
     - containerPort: 8080 
     - containerPort: 53 
     protocol: UDP 
     - containerPort: 5353 
     protocol: UDP 
     - containerPort: 5666 
     - containerPort: 4500 
     - containerPort: 500 
     - containerPort: 3306 
volumes: 
    - name: dshm 
    emptyDir: 
     medium: Memory 
    - name: ip-nonlocal-bind 
    hostPath: 
     path: /proc/sys/net/ipv4 
    - name: dev 
    hostPath: 
     path: /dev 
     type: Directory 
    - name: modules 
    hostPath: 
     path: /lib/modules 
     type: Directory 

質問があれば、このスレッドのコメントや、[email protected]までお気軽にお問い合わせください。

1

私は、再生産とログの欠如がなければ、結論づけることはできませんが、簡単に気付くことのできる違いの1つは、ドッカーコマンドで指定した特権です。たとえばNET_ADMINまたはNET_RAWなどです。 Kubernetesの実行コマンドに欠落しています。

Kubernetesでは、ポッド宣言の内のcapabilitiesというポッドにそのような特権を割り当てることもできます。

私はあなたがKubectlでこれを行うことができるかどうかわからないが、あなたはポッドのためのYAML宣言を使用する場合、仕様はおおよそ次のようになります。それ以上の基準について

apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: myshell image: "ubuntu:14.04" command: - /bin/sleep - "300" securityContext: capabilities: add: - NET_ADMIN

、私はお勧めします

:で簡単に見
+0

私はこれをyamlファイルに変換しようとしましたが、このようなものがありました: ' apiVersion:v1 種類:ポッド メタデータ: 名:エッジ スペック: コンテナ: - 名前:エッジ 画像: "crossense /エッジ:生産" コマンド: -/binに/ bashの たSecurityContext: 機能: アドオン: - NET_ADMIN - SYS_MODULE - NET_RAW vo lumeMounts: - 名:IP-ローカル以外のバインド MOUNTPATH:/ホストは、/ proc/sys/net/IPv4の - 名:devの MOUNTPATH:/ホストの/ dev - 名前:モジュール MOUNTPATH:/ホスト/ libに/モジュール' –

+0

'ポート: - containerPort:80 - containerPort:8080 - containerPort:53 - containerPort:5353 - containerPort:5666 - containerPort:4500 - containerPort:500 - containerPort:3306の ボリューム: - 名前:ip-nonlocal-bind hostPath: パス:は、/ proc/sys/net/IPv4の - 名前: パス:/ devの タイプ:ディレクトリ - 名前: ホストパスdevのモジュール ホストパス: パス:/ libに/モジュール タイプ:Directory' –

+0

結果をまだログはありません。一貫して再起動するポッド –

関連する問題