Мы запускаем кластер kubernetes на облачной платформе Google, который создает развертывание с 8 репликами на основе орешника. У нас было это работает отлично в течение месяца, но в последнее время мы начали получать ниже сообщение об ошибке, когда мы пытаемся начать наши развертывания (нерелевантные кадры стека опущен):Ошибка Kubernetes «фатальное предупреждение: протокол_версия» при создании развертывания
2016-07-15 12:58:02,117 [My-hazelcast.my-deployment-368708980-8v7ig @ my-deployment-368708980-8v7ig] ERROR - [10.68.5.3]:5701 [MyProject] [3.6.2] Error executing: GET at: https://kubernetes.default.svc/api/v1/namespaces/default/endpoints/my-service. Cause: Received fatal alert: protocol_version
io.fabric8.kubernetes.client.KubernetesClientException: Error executing: GET at: https://kubernetes.default.svc/api/v1/namespaces/default/endpoints/my-service. Cause: Received fatal alert: protocol_version
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestException(OperationSupport.java:272) ~[kubernetes-client-1.3.66.jar:na]
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:205) ~[kubernetes-client-1.3.66.jar:na]
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleGet(OperationSupport.java:196) ~[kubernetes-client-1.3.66.jar:na]
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleGet(BaseOperation.java:483) ~[kubernetes-client-1.3.66.jar:na]
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.get(BaseOperation.java:108) ~[kubernetes-client-1.3.66.jar:na]
at com.noctarius.hazelcast.kubernetes.ServiceEndpointResolver.resolve(ServiceEndpointResolver.java:62) ~[hazelcast-kubernetes-discovery-0.9.2.jar:na]
at com.noctarius.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy.discoverNodes(HazelcastKubernetesDiscoveryStrategy.java:74) ~[hazelcast-kubernetes-discovery-0.9.2.jar:na]
at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.discoverNodes(DefaultDiscoveryService.java:74) ~[hazelcast-all-3.6.2.jar:3.6.2]
....
Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[na:1.7.0_95]
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) ~[na:1.7.0_95]
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1991) ~[na:1.7.0_95]
...
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:203) ~[kubernetes-client-1.3.66.jar:na]
... 18 common frames omitted
Когда я Google этой ошибки , Я получаю много запросов о несоответствии версии протокола TLS. По-видимому, Java 8 предполагает другую версию протокола TLS (TLS 1.2), чем Java 7 и 6 (TLS 1.0). Тем не менее, все наши контейнеры используют одно и то же изображение докеры (основанное на изображении hazelcast/hazelcast:3.6.2), которое основано на Java 7, поэтому не должно быть несоответствия версии протокола (и этот слой нашего изображения не изменился).
Мы попытались вернуть все наши недавние изменения в попытке решить эту ошибку, но безуспешно. И, честно говоря, никто в нашей команде не изменил ничего уважительно связанного с SSL или механизмом обнаружения Hazelcast Kubernetes. Недавно мы обновили наши компоненты Google Cloud Cloud SDK (gcloud components update
) по настоянию инструментов Cloud SDK («Обновления доступны для некоторых компонентов Cloud SDK»). Теперь мы запускаем Google Clouds SDK версии 117.0.0, но я не вижу никаких изменений, связанных с SSL или TLS, в release notes.
Почему мы вдруг увидели это сообщение об ошибке «fatal alert: protocol_version
» в наших кублетках kubernetes и как его решить?