2017-11-02 1 views
1

数ヶ月前までに、the "hostPort" configuration for Pods was not going to work with CNI based integrationsが見つかりました。これは、Calicoを使用する任意のKubernetesクラスタでは、Serviceを使用せずに、または特定のノードのポートにPodのポートを直接直接公開することができないことを意味しました(ちょっと極端です)。KubernetesクラスタのCalico CNI設定を更新できません

Kubernetes 1.7.0から起動することは可能ですが、成功することなく、私がしようとしているのはthe new "portmap" CNI pluginにするために、Calicoの設定を変更する必要があります。私は新しいIBM Bluemix Container Serviceクラスターから始めます。

マイ更紗ノードDaemonSetあり、次のCNI_NETWORK_CONFIG環境変数:

{ 
    "name": "k8s-pod-network", 
    "cniVersion": "0.3.1", 
    "type": "calico", 
    "etcd_endpoints": "__ETCD_ENDPOINTS__", 
    "etcd_key_file": "__ETCD_KEY_FILE__", 
    "etcd_cert_file": "__ETCD_CERT_FILE__", 
    "etcd_ca_cert_file": "__ETCD_CA_CERT_FILE__", 
    "log_level": "info", 
    "mtu": 1480, 
    "ipam": { 
    "type": "calico-ipam" 
    }, 
    "policy": { 
    "type": "k8s", 
    "k8s_api_root": "https://__KUBERNETES_SERVICE_HOST__:__KUBERNETES_SERVICE_PORT__", 
    "k8s_auth_token": "__SERVICEACCOUNT_TOKEN__" 
    }, 
    "kubernetes": { 
    "kubeconfig": "__KUBECONFIG_FILEPATH__" 
    } 
} 

私はここでやった以下の構成に置き換えることをしようとしていた何を:

{ 
    "name": "k8s-pod-network", 
    "cniVersion": "0.3.1", 
    "plugins": [{ 
    "type": "calico", 
    "etcd_endpoints": "__ETCD_ENDPOINTS__", 
    "etcd_key_file": "__ETCD_KEY_FILE__", 
    "etcd_cert_file": "__ETCD_CERT_FILE__", 
    "etcd_ca_cert_file": "__ETCD_CA_CERT_FILE__", 
    "log_level": "info", 
    "mtu": 1480, 
    "ipam": { 
     "type": "calico-ipam" 
    }, 
    "policy": { 
     "type": "k8s", 
     "k8s_api_root": "https://__KUBERNETES_SERVICE_HOST__:__KUBERNETES_SERVICE_PORT__", 
     "k8s_auth_token": "__SERVICEACCOUNT_TOKEN__" 
    }, 
    "kubernetes": { 
     "kubeconfig": "__KUBECONFIG_FILEPATH__" 
    } 
    }, 
    { 
     "type": "portmap", 
     "snat": true, 
     "capabilities": { 
     "portMappings": true 
     } 
    } 
    ] 
} 

calico-nodeポッドが正常に動作していました強制的にリブートした後、自分のポッドは、初期化中に「ポッドを同期させていません」というイベントが「kubelet NODE_IP」から「ポンド」状態になっています。

私はこの問題について助けていただきありがとうございます。前もって感謝します。

答えて

1

あなたはコンテンツとしては妥当であると思うが、設定ファイルの名前を末尾が.confから.conflistに変更する必要があるかもしれないと思う。いくつかのWIP変更を含むPRがあり、キャリコマニフェストのホストポートを有効にするためのhttps://github.com/projectcalico/calico/pull/903があります。これはあなたが行ったことと比較することができます。

ファイル名をデーモンセットで設定すると、リリースされたinstall-cniコンテナが以前の設定をクリーンアップしないため、kubeletが使用する設定ファイルがわからないため、ホスト上の前の設定ファイルを削除する必要があります。

+0

ファイル名を '.conf'から' .conflist'に変更しました。少なくとも、 'calico-node'は正しく動作し、他のポッドも実行されます。残念ながら、私はまだノードのポートにアクセスできません。おそらく、スタック内のどこかにファイアウォールルールが矛盾したり、おそらくファイアウォールルールを作るのは古い設定ファイルでしょう。まだこの部分については調査していますが、ありがとうございます。 –

+0

OK、クラスタに新しいノードを追加しましたが、それでもポートにアクセスできないので、ファイアウォールの設定が間違っている可能性があります。私はまだ正確な問題がどこにあるのか理解できません。 –

+0

あなたのトラフィックに何が起こっているのか分からないので、tcpdumpと 'sudo iptables-save -c | grep DROP'(トラフィックがホストに到着しているかどうか、ホストによってトラフィックがドロップされているかどうかを確認する) –

関連する問題