Kubernetes 客户端库 AuthenticationException
Kubernetes client library AuthenticationException
我使用 Kubernetes .net 客户端库版本已经有一段时间了,以便从容器中访问 Kubernetes api。今天我从客户端库版本 1.6.11 更新到 4.0.21 但这破坏了客户端身份验证的某些部分。
这是我遇到的异常:
HttpRequestException. The SSL connection could not be established, see inner exception.
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
(rest of the stack trace ommited)
内部异常:
AuthenticationException. The remote certificate is invalid because of errors in the certificate chain: PartialChain.
at System.Net.Security.SslStream.SendAuthResetSignal(ProtocolToken message, ExceptionDispatchInfo exception)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
我使用默认的 inClusterConfiguration 创建 Kubernetes Client 实例:
KubernetesClientConfiguration config = KubernetesClientConfiguration.InClusterConfig();
Kubernetes client = new Kubernetes(config);
在验证我仍然可以使用与存储在 /var/run/secrets/kubernetes.io/serviceaccount/
中的 pod 服务帐户关联的令牌通过 curl 与 API 通信后。
我对 SSL 不太熟悉,但经过一番努力后,我找到了一个解决方法,将 ca.cert 文件从 serviceaccount 目录复制到 /usr/local/share/ca-certificates/
和 运行 update-ca-certificates
但我确实想知道发生了什么变化,现在需要执行此操作。
有什么方法可以配置客户端,使其自动完成或以其他方式解决?
从客户的 Github 中,我发现 this issue 提出了比我发现的更好的解决方法。
KubernetesClientConfiguration config = KubernetesClientConfiguration.InClusterConfig();
config.TcpKeepAlive = false;
Kubernetes client = new Kubernetes(config);
我使用 Kubernetes .net 客户端库版本已经有一段时间了,以便从容器中访问 Kubernetes api。今天我从客户端库版本 1.6.11 更新到 4.0.21 但这破坏了客户端身份验证的某些部分。
这是我遇到的异常:
HttpRequestException. The SSL connection could not be established, see inner exception.
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
(rest of the stack trace ommited)
内部异常:
AuthenticationException. The remote certificate is invalid because of errors in the certificate chain: PartialChain.
at System.Net.Security.SslStream.SendAuthResetSignal(ProtocolToken message, ExceptionDispatchInfo exception)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
我使用默认的 inClusterConfiguration 创建 Kubernetes Client 实例:
KubernetesClientConfiguration config = KubernetesClientConfiguration.InClusterConfig();
Kubernetes client = new Kubernetes(config);
在验证我仍然可以使用与存储在 /var/run/secrets/kubernetes.io/serviceaccount/
中的 pod 服务帐户关联的令牌通过 curl 与 API 通信后。
我对 SSL 不太熟悉,但经过一番努力后,我找到了一个解决方法,将 ca.cert 文件从 serviceaccount 目录复制到 /usr/local/share/ca-certificates/
和 运行 update-ca-certificates
但我确实想知道发生了什么变化,现在需要执行此操作。
有什么方法可以配置客户端,使其自动完成或以其他方式解决?
从客户的 Github 中,我发现 this issue 提出了比我发现的更好的解决方法。
KubernetesClientConfiguration config = KubernetesClientConfiguration.InClusterConfig();
config.TcpKeepAlive = false;
Kubernetes client = new Kubernetes(config);