RHEL 7.6がインストールされたvmware仮想マシンがいくつかありますが、最近、データセンターの移動場所が原因ですべてが再起動しました。
問題は、再起動後、Javaなどの一部のアプリケーションが、kube-proxyがtcp6ソケットでのみリッスンすることです。これは奇妙なことです。これらのアプリケーションを再起動しても、tcp6ソケットでのみリッスンするため、jvm引数を追加する必要がありますJava.net.preferIPv4Stack=true
ipv4ソケットで再度リッスンできるようにします。しかし、kube-proxy(kubernetes cluster proxy)の場合、解決策が見つかりません。
私は人々が言うのを見ました、tcp6はtcpを意味します、しかし、私はipv4アドレスでそれらのソケットにアクセスすることができません。
私の質問は:これを引き起こす可能性があるのは何ですか? ipv6を無効にしたくありませんが、ipv4を優先します。
[root@ocrpoc1 ~]# telnet 127.0.0.1 32414
Trying 127.0.0.1...
^C
[root@ocrpoc1 ~]# telnet 127.0.0.1 6443
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^ZConnection closed by foreign Host.
[root@ocrpoc1 ~]# netstat -apn | grep kube-proxy
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 5282/kube-proxy
tcp 0 0 X.X.X.X:60458 X.X.X.X:6443 ESTABLISHED 5282/kube-proxy
tcp6 0 0 :::10256 :::* LISTEN 5282/kube-proxy
tcp6 0 0 :::32414 :::* LISTEN 5282/kube-proxy
[root@ocrpoc1 ~]# nc -4 -lk 32414
Ncat: bind to 0.0.0.0:32414: Address already in use. QUITTING.
[root@ocrpoc1 ~]# nc -6 -lk 32414
Ncat: bind to :::32414: Address already in use. QUITTING.
他の人を助けるためにこの問題に遭遇するかもしれません。
それはカリコによって引き起こされます。デフォルトでは、calicoは「autodetect」メソッドを使用してIPv4アドレスを選択します。これは、有効なipv4アドレスを持つ「最初に見つかった」インターフェースを意味します。
私のkubernetesクラスターの1つのノードが、docker-composeによっていくつかのdockerコンテナーを作成しました。これにより、ブリッジインターフェイスbr-XXXXXが提供され、calico-nodeコンテナーは起動時にそれを選択します。
これを修正するために、次の環境変数を追加するcalico-nodeDaemonSetを編集しました。
名前:IP_AUTODETECTION_METHOD値:can-reach = my kubernetes master node ip