29.4. 자주하는 질문
29.4.1. Cluster Operator와 관련된 질문 링크 복사링크가 클립보드에 복사되었습니다!
29.4.1.1. Apache Kafka용 Streams를 설치하려면 클러스터 관리자 권한이 필요한 이유는 무엇입니까? 링크 복사링크가 클립보드에 복사되었습니다!
Apache Kafka용 Streams를 설치하려면 다음 클러스터 범위 리소스를 생성할 수 있어야 합니다.
-
Kafka및KafkaConnect와 같이 Apache Kafka용 Streams에 고유한 리소스에 대해 OpenShift에 지시하는 CRD(사용자 정의 리소스 정의) -
clusterroles및ClusterRoleBindings
특정 OpenShift 네임스페이스에 범위가 지정되지 않은 클러스터 범위 리소스에는 일반적으로 클러스터 관리자 권한이 필요합니다.
클러스터 관리자는 설치 중인 모든 리소스( /install/ 디렉터리)를 검사하여 ClusterRole 이 불필요한 권한을 부여하지 않도록 할 수 있습니다.
설치 후 Cluster Operator는 일반 로 실행되므로 배포에 액세스할 수 있는 권한이 있는 모든 표준(admin이 아닌) OpenShift 사용자가 구성할 수 있습니다. 클러스터 관리자는 Deployment Kafka 사용자 정의 리소스를 관리하는 데 필요한 권한을 표준 사용자에게 부여할 수 있습니다.
또한 다음을 참조하십시오.
29.4.1.2. Cluster Operator가 ClusterRoleBinding 을 생성해야 하는 이유는 무엇입니까? 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에는 권한 에스컬레이션 이 기본 제공되어 있으므로 Cluster Operator에서 자체적으로 권한이 없는 권한을 부여할 수 없으며, 특히 액세스할 수 없는 네임스페이스에 이러한 권한을 부여할 수 없습니다. 따라서 Cluster Operator에는 오케스트레이션하는 모든 구성 요소에 필요한 권한이 있어야 합니다.
다음과 같이 Cluster Operator에서 액세스 권한을 부여할 수 있어야 합니다.
-
Topic Operator는 Operator가 실행되는 네임스페이스에
Roles및RoleBinding을 생성하여KafkaTopics를 관리할 수 있습니다. -
User Operator는 Operator가 실행되는 네임스페이스에서
Roles및RoleBinding을 생성하여KafkaUsers를 관리할 수 있습니다. -
노드의 실패 도메인
은ClusterRoleBinding을 생성하여 Apache Kafka용 Streams에서 검색
랙 인식 파티션 할당을 사용하는 경우 브로커 Pod는 Amazon AWS의 가용성 영역과 같이 실행 중인 노드에 대한 정보를 가져올 수 있어야 합니다. Node 는 클러스터 범위 리소스이므로 네임스페이스 범위의 RoleBinding 이 아닌 ClusterRoleBinding 을 통해서만 액세스할 수 있습니다.
29.4.1.3. 표준 OpenShift 사용자가 Kafka 사용자 정의 리소스를 생성할 수 있습니까? 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 표준 OpenShift 사용자에게는 Cluster Operator가 처리하는 사용자 정의 리소스를 관리하는 데 필요한 권한이 없습니다. 클러스터 관리자는 OpenShift RBAC 리소스를 사용하여 사용자에게 필요한 권한을 부여할 수 있습니다.
자세한 내용은 4.6절. “Apache Kafka 관리자용 Streams 지정”의 내용을 참조하십시오.
29.4.1.4. 로그에서 잠금 경고를 얻는 데 실패한 것은 무엇을 의미합니까? 링크 복사링크가 클립보드에 복사되었습니다!
각 클러스터에 대해 Cluster Operator는 한 번에 하나의 작업만 실행합니다. Cluster Operator는 잠금을 사용하여 동일한 클러스터에 대해 두 개의 병렬 작업이 실행되지 않는지 확인합니다. 다른 작업은 잠금이 해제되기 전에 현재 작업이 완료될 때까지 기다려야 합니다.
- INFO
- 클러스터 작업의 예로는 클러스터 생성,롤링 업데이트,축소 , 확장 등이 있습니다.
잠금 대기 시간이 너무 오래 걸리는 경우 작업이 시간 초과되고 다음 경고 메시지가 로그에 출력됩니다.
2018-03-04 17:09:24 WARNING AbstractClusterOperations:290 - Failed to acquire lock for kafka cluster lock::kafka::myproject::my-cluster
2018-03-04 17:09:24 WARNING AbstractClusterOperations:290 - Failed to acquire lock for kafka cluster lock::kafka::myproject::my-cluster
STRIMZI_FULL_RECONCILIATION_INTERVAL_MS 및 STRIMZI_OPERATION_TIMEOUT_MS 의 정확한 구성에 따라 기본 문제를 표시하지 않고 가끔 경고 메시지가 표시될 수 있습니다. 시간 초과는 다음 주기적인 조정에서 선택되므로 작업이 잠금을 확보하고 다시 실행할 수 있습니다.
지정된 클러스터에 대해 실행 중인 다른 작업이 없는 경우에도 이 메시지가 주기적으로 표시되면 오류로 인해 잠금이 제대로 해제되지 않았음을 나타낼 수 있습니다. 이 경우 Cluster Operator를 다시 시작하십시오.
29.4.1.5. TLS를 사용하여 NodePort에 연결할 때 호스트 이름 확인이 실패하는 이유는 무엇입니까? 링크 복사링크가 클립보드에 복사되었습니다!
현재 TLS 암호화가 활성화된 NodePort를 사용하여 클러스터 외부 액세스는 TLS 호스트 이름 확인을 지원하지 않습니다. 결과적으로 호스트 이름을 확인하는 클라이언트가 연결할 수 없습니다. 예를 들어 Java 클라이언트는 다음과 같은 예외로 실패합니다.
Caused by: java.security.cert.CertificateException: No subject alternative names matching IP address 168.72.15.231 found at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:168) at sun.security.util.HostnameChecker.match(HostnameChecker.java:94) at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455) at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:252) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1501) ... 17 more
Caused by: java.security.cert.CertificateException: No subject alternative names matching IP address 168.72.15.231 found
at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:168)
at sun.security.util.HostnameChecker.match(HostnameChecker.java:94)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:252)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1501)
... 17 more
연결하려면 호스트 이름 확인을 비활성화해야 합니다. Java 클라이언트에서 구성 옵션 ssl.endpoint.identification.algorithm 을 빈 문자열로 설정하여 이 작업을 수행할 수 있습니다.
속성 파일을 사용하여 클라이언트를 구성할 때 다음과 같은 방식으로 수행할 수 있습니다.
ssl.endpoint.identification.algorithm=
ssl.endpoint.identification.algorithm=
Java에서 클라이언트를 직접 구성할 때 구성 옵션을 빈 문자열로 설정합니다.
props.put("ssl.endpoint.identification.algorithm", "");
props.put("ssl.endpoint.identification.algorithm", "");