{"id":46858,"date":"2022-12-28T01:49:00","date_gmt":"2023-09-07T01:57:48","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/"},"modified":"2024-04-29T07:18:02","modified_gmt":"2024-04-28T23:18:02","slug":"%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/","title":{"rendered":"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 &#8211; KSQL \u6d41\u521b\u5efa\u90e8\u5206"},"content":{"rendered":"<h2>\u7b80\u8981<\/h2>\n<p>Confluent for Kubernetes (CFK) \u662f\u4e00\u4e2a\u4e91\u539f\u751f\u7684\u63a7\u5236\u5e73\u53f0\uff0c\u7528\u4e8e\u5728\u79c1\u6709\u4e91\u73af\u5883\uff08\u672c\u4f8b\u4e2d\u4e3aAzure Kubernetes Service\uff08AKS\uff09\uff09\u4e0a\u90e8\u7f72\u548c\u7ba1\u7406Confluent\u3002\u5b83\u5177\u6709\u57fa\u4e8e\u58f0\u660e\u6027API\u7684\u6807\u51c6\u4e14\u7b80\u5355\u7684\u754c\u9762\uff0c\u53ef\u7528\u4e8e\u5b9a\u5236\u3001\u90e8\u7f72\u548c\u7ba1\u7406Confluent\u5e73\u53f0\u3002<\/p>\n<p>\u4f7f\u7528CFK\u5c06Confluent Platform\u7684KSQL\u90e8\u7f72\u5728AKS\u4e0a\uff0c\u521b\u5efa\u6d41\u7a0b\u6765\u521b\u5efaStream\u7684\u5de5\u4f5c\u6d41\u7a0b\u6982\u8ff0\u5982\u4e0b\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u51c6\u5907 Kubernetes \u73af\u5883\uff08\u5728\u9884\u5148\u51c6\u5907\u5b8c\u6210\u7684\u60c5\u51b5\u4e0b\uff09<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u90e8\u7f72 Confluent for Kubernetes\uff08\u5728\u9884\u5148\u51c6\u5907\u5b8c\u6210\u7684\u60c5\u51b5\u4e0b\uff09<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u90e8\u7f72 Confluent Platform\uff08\u5305\u62ec\u6240\u9700\u7684 Connector Plugin\uff09\uff08\u5728\u9884\u5148\u51c6\u5907\u5b8c\u6210\u7684\u60c5\u51b5\u4e0b\uff09<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6267\u884c Confluent Platform \u7684\u5176\u4ed6\u90e8\u7f72\uff08\u521b\u5efa\u4e3b\u9898\uff09\uff08\u5728\u9884\u5148\u51c6\u5907\u5b8c\u6210\u7684\u60c5\u51b5\u4e0b\uff09<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6267\u884c Confluent Platform \u7684\u5176\u4ed6\u90e8\u7f72\uff08\u521b\u5efa\u6e90\/\u6c47 Connector\uff09\uff08\u5728\u9884\u5148\u51c6\u5907\u5b8c\u6210\u7684\u60c5\u51b5\u4e0b\uff09<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u4e3a Confluent Platform \u7684\u6d41\u8fdb\u884c\u989d\u5916\u914d\u7f6e<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u6267\u884c Confluent Platform \u7684\u6d41\u7684\u989d\u5916\u90e8\u7f72\uff08\u521b\u5efa\u6d41\uff09<\/ol>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b36913a08637a6988b9\/4-0.png\" alt=\"image.png\" \/><\/div>\n<hr \/>\n<h3>\u672c\u5730\u73af\u5883<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">macOS Monterey 12.3.1<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">python 3.8.12<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Azure CLI 2.34.1<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">helm v3.6.3<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">kubectl v1.21.3<\/ul>\n<h3>\u4e8b\u524d\u51c6\u5907<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b36913a08637a6988b9\/9-0.png\" alt=\"image.png\" \/><\/div>\n<hr \/>\n<h2>\u65b0\u589e\u914d\u7f6e\u7684Confluent\u5e73\u53f0<\/h2>\n<h3>\u66f4\u6539Confluent\u5e73\u53f0\u7684\u914d\u7f6e<\/h3>\n<p>\u4e3a\u4e86\u4f7f\u7528KSQL REST API\uff08ksqldb-cli\uff09\uff0c\u6211\u4eec\u9700\u8981\u5728\u4e4b\u524d\u7684&#8221;confluent_platform_ccc.yaml&#8221;\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4e00\u4e2a&#8221;kind: KsqlDB&#8221;\u548c&#8221;spec: &#8211; configOverrides: &#8211; server:&#8221;\u7684\u5b9a\u4e49\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">platform.confluent.io\/v1beta1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">KsqlDB<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ksqldb<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">akscfk231<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">replicas<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n  <span class=\"na\">image<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">application<\/span><span class=\"pi\">:<\/span> <span class=\"s\">confluentinc\/cp-ksqldb-server:7.1.0<\/span>\r\n    <span class=\"na\">init<\/span><span class=\"pi\">:<\/span> <span class=\"s\">confluentinc\/confluent-init-container:2.3.0<\/span>\r\n  <span class=\"na\">dataVolumeCapacity<\/span><span class=\"pi\">:<\/span> <span class=\"s\">10Gi<\/span>\r\n  <span class=\"na\">configOverrides<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">server<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">ksql.schema.registry.url=http:\/\/schemaregistry.akscfk231.svc.cluster.local:8081<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">listeners=http:\/\/ksqldb.akscfk231.svc.cluster.local:8088<\/span>\r\n<\/code><\/pre>\n<hr \/>\n<h2>\u5728Confluent\u5e73\u53f0\u4e0a\u8fdb\u884c\u9644\u52a0\u90e8\u7f72<\/h2>\n<h3>\u5c06\u9644\u52a0\u8bbe\u7f6e\u53cd\u6620\u5230Confluent Platform\u7684ksqldb\u4e2d\u3002<\/h3>\n<p>\u5c06\u524d\u8ff0\u6dfb\u52a0\u5b9a\u4e49\u7684&#8221;confluent_platform_ccc.yaml&#8221;\u91cd\u65b0\u5e94\u7528\u3002\u4ec5\u5c06ksqldb\u914d\u7f6e\u4e3a\u5df2\u914d\u7f6e\u7684\u8bbe\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl apply -f confluent_platform_ccc.yaml\r\nzookeeper.platform.confluent.io\/zookeeper unchanged\r\nkafka.platform.confluent.io\/kafka unchanged\r\nconnect.platform.confluent.io\/connect unchanged\r\nksqldb.platform.confluent.io\/ksqldb configured       # &lt;--- \u3053\u3053\u3060\u3051 configured\r\ncontrolcenter.platform.confluent.io\/controlcenter unchanged\r\nschemaregistry.platform.confluent.io\/schemaregistry unchanged\r\nkafkarestproxy.platform.confluent.io\/kafkarestproxy unchanged\r\n<\/code><\/pre>\n<h3>\u786e\u8ba4\u5df2\u90e8\u7f72\u7684 Confluent Platform \u8d44\u6e90<\/h3>\n<p>ksqldb\u7684Configmap\u4fe1\u606f<\/p>\n<pre class=\"post-pre\"><code>## Configmap \u4e00\u89a7\u306e\u53d6\u5f97\r\n$ kubectl get configmap                 \r\nNAME                           DATA   AGE\r\nconnect-init-config            3      26m\r\nconnect-shared-config          5      26m\r\ncontrolcenter-init-config      3      23m\r\ncontrolcenter-shared-config    6      23m\r\nkafka-init-config              3      24m\r\nkafka-shared-config            5      24m\r\nkafkarestproxy-init-config     3      23m\r\nkafkarestproxy-shared-config   4      23m\r\nksqldb-init-config             3      23m\r\nksqldb-shared-config           5      23m\r\nkube-root-ca.crt               1      29m\r\nschemaregistry-init-config     3      23m\r\nschemaregistry-shared-config   4      23m\r\nzookeeper-init-config          3      26m\r\nzookeeper-shared-config        6      26m\r\n\r\n## ksqldb \u306e Configmap \u60c5\u5831\r\n$ kubectl describe configmap ksqldb-shared-config\r\nName:         ksqldb-shared-config\r\nNamespace:    akscfk231\r\nLabels:       app.kubernetes.io\/managed-by=confluent-operator\r\n              confluent-platform=true\r\n              cr-name=ksqldb\r\n              type=ksqldb\r\nAnnotations:  platform.confluent.io\/cr-name: ksqldb\r\n              platform.confluent.io\/last-applied:\r\n                eyJkYXRhIjp7ImRpc2stdXNhZ2UtYWdlbnQucHJvcGVydGllcyI6ImRpc2suZGF0YT0vbW50L2RhdGEvZGF0YVxuc2VydmljZS5uYW1lPWtzcWxkYlxuIiwiam14LWV4cG9ydGVyLn...\r\n              platform.confluent.io\/namespace: akscfk231\r\n              platform.confluent.io\/type: ksqldb\r\n\r\nData\r\n====\r\njvm.config:\r\n----\r\n-Dcom.sun.management.jmxremote=true\r\n-Dcom.sun.management.jmxremote.authenticate=false\r\n-Dcom.sun.management.jmxremote.local.only=false\r\n-Dcom.sun.management.jmxremote.port=7203\r\n-Dcom.sun.management.jmxremote.rmi.port=7203\r\n-Dcom.sun.management.jmxremote.ssl=false\r\n-Djava.awt.headless=true\r\n-Djdk.tls.ephemeralDHKeySize=2048\r\n-Djdk.tls.server.enableSessionTicketExtension=false\r\n-XX:+ExplicitGCInvokesConcurrent\r\n-XX:+PrintFlagsFinal\r\n-XX:+UnlockDiagnosticVMOptions\r\n-XX:+UseG1GC\r\n-XX:ConcGCThreads=1\r\n-XX:G1HeapRegionSize=16\r\n-XX:InitiatingHeapOccupancyPercent=35\r\n-XX:MaxGCPauseMillis=20\r\n-XX:MaxMetaspaceFreeRatio=80\r\n-XX:MetaspaceSize=96m\r\n-XX:MinMetaspaceFreeRatio=50\r\n-XX:ParallelGCThreads=1\r\n-server\r\n\r\nksqldb.properties:\r\n----\r\nauthentication.skip.paths=\/chc\/live,\/chc\/ready\r\nbootstrap.servers=kafka.akscfk231.svc.cluster.local:9071\r\nconfig.providers=file\r\nconfig.providers.file.class=org.apache.kafka.common.config.provider.FileConfigProvider\r\nconfluent.support.metrics.enable=true\r\nksql.schema.registry.url=http:\/\/schemaregistry.akscfk231.svc.cluster.local:8081   # &lt;--- \u8ffd\u52a0\u3055\u308c\u305f\u8a2d\u5b9a\r\nksql.service.id=akscfk231.ksqldb_\r\nksql.sink.replicas=3\r\nksql.streams.num.standby.replicas=1\r\nksql.streams.producer.confluent.batch.expiry.ms=9223372036854775807\r\nksql.streams.producer.max.block.ms=9223372036854775807\r\nksql.streams.producer.request.timeout.ms=300000\r\nksql.streams.producer.retries=2147483647\r\nksql.streams.replication.factor=3\r\nksql.streams.state.dir=\/mnt\/data\/data\/ksql-state\r\nlisteners=http:\/\/ksqldb.akscfk231.svc.cluster.local:8088                          # &lt;--- \u8ffd\u52a0\u3055\u308c\u305f\u8a2d\u5b9a\r\nrequest.timeout.ms=20000\r\nretry.backoff.ms=500\r\nsecurity.protocol=PLAINTEXT\r\n\r\nlog4j.properties:\r\n----\r\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\r\nlog4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout\r\nlog4j.appender.stdout.layout.ConversionPattern=[%p] %d [%t] %c %M - %m%n\r\nlog4j.rootLogger=INFO, stdout\r\n\r\ndisk-usage-agent.properties:\r\n----\r\ndisk.data=\/mnt\/data\/data\r\nservice.name=ksqldb\r\n\r\njmx-exporter.yaml:\r\n----\r\nlowercaseOutputLabelNames: false\r\nlowercaseOutputName: true\r\nssl: false\r\n\r\nEvents:  &lt;none&gt;\r\n<\/code><\/pre>\n<p>Ksqldb \u7684\u8be6\u7ec6\u4fe1\u606f<\/p>\n<pre class=\"post-pre\"><code>$ kubectl describe ksqldb ksqldb\r\nName:         ksqldb\r\nNamespace:    akscfk231\r\nLabels:       &lt;none&gt;\r\nAnnotations:  &lt;none&gt;\r\nAPI Version:  platform.confluent.io\/v1beta1\r\nKind:         KsqlDB\r\nMetadata:\r\n  Creation Timestamp:  2022-08-18T05:56:26Z\r\n  Finalizers:\r\n    ksqldb.finalizers.platform.confluent.io\r\n  Generation:  1\r\n  Managed Fields:\r\n    API Version:  platform.confluent.io\/v1beta1\r\n    Fields Type:  FieldsV1\r\n    fieldsV1:\r\n      f:metadata:\r\n        f:annotations:\r\n          .:\r\n          f:kubectl.kubernetes.io\/last-applied-configuration:\r\n      f:spec:\r\n        .:\r\n        f:configOverrides:\r\n          .:\r\n          f:server:\r\n        f:dataVolumeCapacity:\r\n        f:image:\r\n          .:\r\n          f:application:\r\n          f:init:\r\n        f:replicas:\r\n    Manager:      kubectl-client-side-apply\r\n    Operation:    Update\r\n    Time:         2022-08-18T05:56:26Z\r\n    API Version:  platform.confluent.io\/v1beta1\r\n    Fields Type:  FieldsV1\r\n    fieldsV1:\r\n      f:metadata:\r\n        f:finalizers:\r\n          .:\r\n          v:\"ksqldb.finalizers.platform.confluent.io\":\r\n    Manager:      manager\r\n    Operation:    Update\r\n    Time:         2022-08-18T05:56:26Z\r\n    API Version:  platform.confluent.io\/v1beta1\r\n    Fields Type:  FieldsV1\r\n    fieldsV1:\r\n      f:status:\r\n        .:\r\n        f:clusterName:\r\n        f:clusterNamespace:\r\n        f:conditions:\r\n        f:currentReplicas:\r\n        f:internalTopicNames:\r\n        f:kafka:\r\n          .:\r\n          f:bootstrapEndpoint:\r\n        f:operatorVersion:\r\n        f:phase:\r\n        f:readyReplicas:\r\n        f:replicas:\r\n        f:restConfig:\r\n          .:\r\n          f:internalEndpoint:\r\n        f:selector:\r\n        f:serviceID:\r\n    Manager:         manager\r\n    Operation:       Update\r\n    Subresource:     status\r\n    Time:            2022-08-18T06:04:03Z\r\n  Resource Version:  5691\r\n  UID:               3cc5b96a-245c-4982-a21d-28a178c1a1e5\r\nSpec:\r\n  Config Overrides:\r\n    Server:\r\n      ksql.schema.registry.url=http:\/\/schemaregistry.akscfk231.svc.cluster.local:8081   # &lt;--- \u8ffd\u52a0\u3055\u308c\u305f\u8a2d\u5b9a\r\n      listeners=http:\/\/ksqldb.akscfk231.svc.cluster.local:8088                          # &lt;--- \u8ffd\u52a0\u3055\u308c\u305f\u8a2d\u5b9a\r\n  Data Volume Capacity:  10Gi\r\n  Image:\r\n    Application:  confluentinc\/cp-ksqldb-server:7.1.0\r\n    Init:         confluentinc\/confluent-init-container:2.3.0\r\n  Replicas:       1\r\nStatus:\r\n  Cluster Name:       ksqldb\r\n  Cluster Namespace:  akscfk231\r\n  Conditions:\r\n    Last Probe Time:       2022-08-18T06:01:01Z\r\n    Last Transition Time:  2022-08-18T06:04:03Z\r\n    Message:               Deployment has minimum availability.\r\n    Reason:                MinimumReplicasAvailable\r\n    Status:                True\r\n    Type:                  platform.confluent.io\/statefulset-available\r\n    Last Probe Time:       2022-08-18T06:01:01Z\r\n    Last Transition Time:  2022-08-18T06:04:03Z\r\n    Message:               Kubernetes resources ready.\r\n    Reason:                KubernetesResourcesReady\r\n    Status:                True\r\n    Type:                  platform.confluent.io\/resources-ready\r\n    Last Probe Time:       2022-08-18T06:01:01Z\r\n    Last Transition Time:  2022-08-18T06:01:01Z\r\n    Message:               Cluster is not being garbage collected\r\n    Reason:                Garbage Collection not triggered\r\n    Status:                False\r\n    Type:                  platform.confluent.io\/garbage-collecting\r\n  Current Replicas:        1\r\n  Internal Topic Names:\r\n    _confluent-ksql-akscfk231.ksqldb__command_topic\r\n    _confluent-ksql-akscfk231.ksqldb__configs\r\n  Kafka:\r\n    Bootstrap Endpoint:  kafka.akscfk231.svc.cluster.local:9071\r\n  Operator Version:      v0.435.23\r\n  Phase:                 RUNNING\r\n  Ready Replicas:        1\r\n  Replicas:              1\r\n  Rest Config:\r\n    Internal Endpoint:  http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\n  Selector:             app=ksqldb,clusterId=akscfk231,confluent-platform=true,type=ksqldb\r\n  Service ID:           akscfk231.ksqldb_\r\nEvents:\r\n  Type     Reason            Age                 From    Message\r\n  ----     ------            ----                ----    -------\r\n  Warning  Warning           39m (x19 over 44m)  ksqlDB  waiting for at-least one kafka pod availability\r\n  Normal   SuccessfulCreate  39m (x2 over 39m)   ksqlDB  resource type *v1.Service successfully created\r\n  Normal   SuccessfulCreate  39m (x2 over 39m)   ksqlDB  resource type *v1.ConfigMap successfully created\r\n  Normal   SuccessfulCreate  39m                 ksqlDB  resource type *v1.PersistentVolumeClaim successfully created\r\n  Normal   SuccessfulCreate  39m                 ksqlDB  resource type *v1.StatefulSet successfully created\r\n<\/code><\/pre>\n<hr \/>\n<h2>\u589e\u52a0\u6d41\u7684\u914d\u7f6e<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4ee5\u4e0b\u306e\uff12\u3064\u306e\u30af\u30a8\u30ea\u3092 Configmap \u3067\u5b9a\u7fa9\u3057\u307e\u3059<\/ul>\n<\/li>\n<\/ul>\n<p>\u300ctopic001\u300d\u2192\u300cstream001\u300d\u7528\u306e\u30af\u30a8\u30ea\u3068\u3057\u3066\u300cqueries001.sql\u300d\u3092\u5b9a\u7fa9<\/p>\n<p>\u5fc5\u8981\u306a\u30ab\u30e9\u30e0\u306e\u307f\u3092 stream001 \u306b\u8ee2\u9001\u3057\u307e\u3059<\/p>\n<p>\u300cstream001\u300d\u3092\u30d9\u30fc\u30b9\u306b\u300cstream002\u300d\u2192\u300ctopic002\u300d\u7528\u306e\u30af\u30a8\u30ea\u3068\u3057\u3066\u300cqueries002.sql\u300d\u3092\u5b9a\u7fa9<\/p>\n<p>\u30ab\u30e9\u30e0 &#8211; section : &#8216;C&#8217;, &#8216;E&#8217;, &#8216;F&#8217;, &#8216;W&#8217; \u306e\u30c7\u30fc\u30bf\u306e\u307f\u62bd\u51fa\u3057\u3001topic002 \u306b\u8ee2\u9001\u3057\u307e\u3059<\/p>\n<h3>Pod \u7684\u914d\u7f6e\u7528\u65bc\u4f5c\u696d\u3002<\/h3>\n<p>\u4f7f\u7528Configmap\u5b9a\u4e49\u4e24\u4e2a\u67e5\u8be2\u7684Pod\u914d\u7f6e\u6587\u4ef6<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Pod<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ksql-client2<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">akscfk231<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">containers<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ksql-client2<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">confluentinc\/ksqldb-cli:latest<\/span>\r\n    <span class=\"na\">env<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">KSQL_BOOTSTRAP_SERVERS<\/span>\r\n        <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PLAINTEXT:\/\/kafka.akscfk231.svc.cluster.local:9092<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">KSQL_KSQL_SCHEMA_REGISTRY_URL<\/span>\r\n        <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/schemaregistry.akscfk231.svc.cluster.local:8081<\/span>\r\n    <span class=\"na\">volumeMounts<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">mountPath<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/ituru<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ksql-queries<\/span>\r\n  <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ksql-queries<\/span>\r\n    <span class=\"na\">configMap<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">demo-ksql-client-queries-configmap<\/span>\r\n<span class=\"nn\">---<\/span>\r\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ConfigMap<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">demo-ksql-client-queries-configmap<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">akscfk231<\/span>\r\n<span class=\"na\">data<\/span><span class=\"pi\">:<\/span>                         <span class=\"c1\"># &lt;--- \u4ee5\u4e0b\u306b\uff12\u3064\u306e\u30af\u30a8\u30ea\u3092\u5b9a\u7fa9\u3059\u308b<\/span>\r\n  <span class=\"na\">queries001.sql<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|-<\/span>\r\n    <span class=\"s\">CREATE STREAM stream001 (<\/span>\r\n      <span class=\"s\">id VARCHAR,<\/span>\r\n      <span class=\"s\">ctid BIGINT,<\/span>\r\n      <span class=\"s\">section VARCHAR,<\/span>\r\n      <span class=\"s\">iot_state VARCHAR,<\/span>\r\n      <span class=\"s\">val_1 DOUBLE,<\/span>\r\n      <span class=\"s\">val_2 DOUBLE,<\/span>\r\n      <span class=\"s\">created_at VARCHAR<\/span>\r\n    <span class=\"s\">) WITH (kafka_topic = 'topic001', value_format = 'avro');<\/span>\r\n  <span class=\"na\">queries002.sql<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|-<\/span>\r\n    <span class=\"s\">CREATE STREAM stream002 WITH (kafka_topic = 'topic002', value_format = 'JSON_SR') AS <\/span>\r\n    <span class=\"s\">SELECT * FROM stream001 WHERE section='C' OR section='E' OR section='F' OR section='W';<\/span>\r\n<\/code><\/pre>\n<h3>\u542f\u52a8\u4f5c\u4e1a\u4f7f\u7528\u7684 Pod<\/h3>\n<pre class=\"post-pre\"><code>## ksqldb-cli Pod \u306e\u4f5c\u6210\r\n$ kubectl apply -f ksql-client2.yaml \r\npod\/ksql-client2 created\r\nconfigmap\/demo-ksql-client-queries-configmap created\r\n<\/code><\/pre>\n<h3>\u786e\u8ba4\u4f7f\u7528\u4f5c\u4e1aPod<\/h3>\n<pre class=\"post-pre\"><code>$ kubectl get pods\r\nNAME                                  READY   STATUS    RESTARTS      AGE\r\nconfluent-operator-76d7677b8c-ll6rf   1\/1     Running   0             17m\r\nconnect-0                             1\/1     Running   1 (11m ago)   16m\r\ncontrolcenter-0                       1\/1     Running   0             12m\r\nkafka-0                               1\/1     Running   0             13m\r\nkafka-1                               1\/1     Running   0             13m\r\nkafka-2                               1\/1     Running   0             13m\r\nkafkarestproxy-0                      1\/1     Running   0             12m\r\nksql-client2                          1\/1     Running   0             54s\r\nksqldb-0                              1\/1     Running   1 (10m ago)   12m\r\nschemaregistry-0                      1\/1     Running   0             12m\r\nzookeeper-0                           1\/1     Running   0             16m\r\nzookeeper-1                           1\/1     Running   0             16m\r\nzookeeper-2                           1\/1     Running   0             16m\r\n<\/code><\/pre>\n<h3>\u786e\u8ba4 Configmap<\/h3>\n<pre class=\"post-pre\"><code>## ksqldb-cli \u306e Configmap \u8a2d\u5b9a\u60c5\u5831\u78ba\u8a8d\r\n$ kubectl get configmap demo-ksql-client-queries-configmap\r\nNAME                                 DATA   AGE\r\ndemo-ksql-client-queries-configmap   2      112s\r\n\r\n\r\n## ksqldb-cli \u306e Configmap \u8a73\u7d30\u60c5\u5831\u78ba\u8a8d\r\n$ kubectl describe configmap demo-ksql-client-queries-configmap\r\nName:         demo-ksql-client-queries-configmap\r\nNamespace:    akscfk231\r\nLabels:       &lt;none&gt;\r\nAnnotations:  &lt;none&gt;\r\n\r\nData\r\n====\r\nqueries001.sql:\r\n----\r\nCREATE STREAM stream001 (\r\n  id VARCHAR,\r\n  ctid BIGINT,\r\n  section VARCHAR,\r\n  iot_state VARCHAR,\r\n  val_1 DOUBLE,\r\n  val_2 DOUBLE,\r\n  created_at VARCHAR\r\n) WITH (kafka_topic = 'topic001', value_format = 'avro');\r\nqueries002.sql:\r\n----\r\nCREATE STREAM stream002 WITH (kafka_topic = 'topic002', value_format = 'JSON_SR') AS \r\nSELECT * FROM stream001 WHERE section='C' OR section='E' OR section='F' OR section='W';\r\nEvents:  &lt;none&gt;\r\n<\/code><\/pre>\n<hr \/>\n<h2>\u76f4\u64ad\u8a2d\u7f6e<\/h2>\n<h3>\u4f7f\u7528 ksqldb cli \u8fdb\u884c\u521b\u5efa<\/h3>\n<p>\u8bf7\u8fde\u63a5\u5230\u4e0a\u8ff0\u521b\u5efa\u7684\u5de5\u4f5c Pod\uff0c\u4f7f\u7528 ksqldb cli \u6765\u914d\u7f6e\u6d41\u3002<\/p>\n<pre class=\"post-pre\"><code>## \u4f5c\u696d\u7528 Pod \u3078\u306e\u63a5\u7d9a\r\n$ kubectl exec -it ksql-client2 -- \/bin\/bash\r\n\r\n\r\n## \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u78ba\u8a8d\uff08stream001\uff09\r\n[appuser@ksql-client2 ~]$ cat \/ituru\/queries001.sql\r\nCREATE STREAM stream001 (\r\n  id VARCHAR,\r\n  ctid BIGINT,\r\n  section VARCHAR,\r\n  iot_state VARCHAR,\r\n  val_1 DOUBLE,\r\n  val_2 DOUBLE,\r\n  created_at VARCHAR\r\n) WITH (kafka_topic = 'topic001', value_format = 'avro');\r\n\r\n## \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u78ba\u8a8d\uff08stream002\uff09\r\n[appuser@ksql-client2 ituru]$ cat \/ituru\/queries002.sql\r\nCREATE STREAM stream002 WITH (kafka_topic = 'topic002', value_format = 'JSON_SR') AS \r\nSELECT * FROM stream001 WHERE section='C' OR section='E' OR section='F' OR section='W';\r\n\r\n\r\n## \u73fe\u5728\u306e topic \u4e00\u89a7\u306e\u53d6\u5f97\r\n[appuser@ksql-client2 ~]$ ksql --execute \"SHOW TOPICS;\" -- http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.\r\n\r\n Kafka Topic                       | Partitions | Partition Replicas \r\n---------------------------------------------------------------------\r\n _schemas_schemaregistry_akscfk231 | 1          | 3                  \r\n akscfk231.connect-configs         | 1          | 3                  \r\n akscfk231.connect-offsets         | 25         | 3                  \r\n akscfk231.connect-status          | 5          | 3                  \r\n topic001                          | 1          | 3                  \r\n topic002                          | 1          | 3                  \r\n---------------------------------------------------------------------\r\n\r\n\r\n## stream001 \u306e\u4f5c\u6210 \r\n[appuser@ksql-client2 ~]$ ksql --file \/ituru\/queries001.sql -- http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.\r\n\r\n Message        \r\n----------------\r\n Stream created \r\n----------------\r\n\r\n## stream001 \u306e\u78ba\u8a8d \r\n[appuser@ksql-client2 ~]$ ksql --execute \"DESCRIBE stream001 EXTENDED;\" -- http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.\r\n\r\nName                 : STREAM001\r\nType                 : STREAM\r\nTimestamp field      : Not set - using &lt;ROWTIME&gt;\r\nKey format           : KAFKA\r\nValue format         : AVRO\r\nKafka topic          : topic001 (partitions: 1, replication: 3)\r\nStatement            : CREATE STREAM STREAM001 (ID STRING, CTID BIGINT, SECTION STRING, IOT_STATE STRING, VAL_1 DOUBLE, VAL_2 DOUBLE, CREATED_AT STRING) WITH (KAFKA_TOPIC='topic001', KEY_FORMAT='KAFKA', VALUE_FORMAT='AVRO');\r\n\r\n Field      | Type            \r\n------------------------------\r\n ID         | VARCHAR(STRING) \r\n CTID       | BIGINT          \r\n SECTION    | VARCHAR(STRING) \r\n IOT_STATE  | VARCHAR(STRING) \r\n VAL_1      | DOUBLE          \r\n VAL_2      | DOUBLE          \r\n CREATED_AT | VARCHAR(STRING) \r\n------------------------------\r\n\r\nLocal runtime statistics\r\n------------------------\r\n\r\n(Statistics of the local KSQL server interaction with the Kafka topic topic001)\r\n\r\n\r\n## stream002 \u306e\u4f5c\u6210 \r\n[appuser@ksql-client2 ~]$ ksql --file \/ituru\/queries002.sql -- http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.\r\n\r\n Message                                \r\n----------------------------------------\r\n Created query with ID CSAS_STREAM002_1 \r\n----------------------------------------\r\n\r\n## stream002 \u306e\u78ba\u8a8d \r\n[appuser@ksql-client2 ~]$ ksql --execute \"DESCRIBE stream002 EXTENDED;\" -- http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.\r\n\r\nName                 : STREAM002\r\nType                 : STREAM\r\nTimestamp field      : Not set - using &lt;ROWTIME&gt;\r\nKey format           : KAFKA\r\nValue format         : JSON_SR\r\nKafka topic          : topic002 (partitions: 1, replication: 3)\r\nStatement            : CREATE STREAM STREAM002 WITH (KAFKA_TOPIC='topic002', PARTITIONS=1, REPLICAS=3, VALUE_FORMAT='JSON_SR') AS SELECT *\r\nFROM STREAM001 STREAM001\r\nWHERE ((((STREAM001.SECTION = 'C') OR (STREAM001.SECTION = 'E')) OR (STREAM001.SECTION = 'F')) OR (STREAM001.SECTION = 'W'))\r\nEMIT CHANGES;\r\n\r\n Field      | Type            \r\n------------------------------\r\n ID         | VARCHAR(STRING) \r\n CTID       | BIGINT          \r\n SECTION    | VARCHAR(STRING) \r\n IOT_STATE  | VARCHAR(STRING) \r\n VAL_1      | DOUBLE          \r\n VAL_2      | DOUBLE          \r\n CREATED_AT | VARCHAR(STRING) \r\n------------------------------\r\n\r\nQueries that write from this STREAM\r\n-----------------------------------\r\nCSAS_STREAM002_1 (RUNNING) : CREATE STREAM STREAM002 WITH (KAFKA_TOPIC='topic002', PARTITIONS=1, REPLICAS=3, VALUE_FORMAT='JSON_SR') AS SELECT * FROM STREAM001 STREAM001 WHERE ((((STREAM001.SECTION = 'C') OR (STREAM001.SECTION = 'E')) OR (STREAM001.SECTION = 'F')) OR (STREAM001.SECTION = 'W')) EMIT CHANGES;\r\n\r\nFor query topology and execution plan please run: EXPLAIN &lt;QueryId&gt;\r\n\r\nLocal runtime statistics\r\n------------------------\r\n\r\n(Statistics of the local KSQL server interaction with the Kafka topic topic002)\r\n\r\nConsumer Groups summary:\r\n\r\nConsumer Group       : _confluent-ksql-akscfk231.ksqldb_query_CSAS_STREAM002_1\r\n&lt;no offsets committed by this group yet&gt;\r\n\r\n\r\n## stream \u4e00\u89a7\u306e\u53d6\u5f97 \r\n[appuser@ksql-client2 ~]$ ksql --execute \"SHOW STREAMS;\" -- http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.\r\n\r\n Stream Name | Kafka Topic | Key Format | Value Format | Windowed \r\n------------------------------------------------------------------\r\n STREAM001   | topic001    | KAFKA      | AVRO         | false    \r\n STREAM002   | topic002    | KAFKA      | JSON_SR      | false    \r\n------------------------------------------------------------------\r\n\r\n\r\n## \u3061\u306a\u307f\u306b\u3001\u65e2\u5b58\u306e stream\uff08stream001\uff09 \u3092\u518d\u5ea6\u4f5c\u6210\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u30a8\u30e9\u30fc\u306b\u306a\u308b\r\n[appuser@ksql-client2 ~]$ ksql --file \/ituru\/queries001.sql -- http:\/\/ksqldb.akscfk231.svc.cluster.local:8088\r\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.\r\nCannot add stream 'STREAM001': A stream with the same name already exists\r\n<\/code><\/pre>\n<h3>\u5728Confluent Control Center\u8fdb\u884c\u786e\u8ba4<\/h3>\n<pre class=\"post-pre\"><code>$ kubectl confluent dashboard controlcenter\r\nhttp:\/\/localhost:9021\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b36913a08637a6988b9\/44-1.png\" alt=\"image.png\" \/><\/div>\n<hr \/>\n<h2>\u8fdb\u884c\u5584\u540e\u5de5\u4f5c<\/h2>\n<h3>Pod \/ secret \/ namespace \u7684\u5378\u8f7d\u65b9\u6cd5<\/h3>\n<pre class=\"post-pre\"><code>## Pod : confluent-operator\r\n$ helm delete confluent-operator             \r\n\r\n## Pod : confluent-platform\r\n$ kubectl delete -f confluent_platform_ccc.yaml\r\n\r\n## Pod : \u4f5c\u696d\u7528\r\n$ kubectl delete -f ksql-client2.yaml\r\n\r\n## namespace \u306e\u524a\u9664\u65b9\u6cd5\uff08namespace\u914d\u4e0b\u306ePod\u306f\u5168\u3066\u524a\u9664\u3055\u308c\u308b\uff09\r\n$ kubectl delete namespace akscfk231\r\n<\/code><\/pre>\n<h3>\u505c\u6b62\uff1a\u505c\u7528AKS\u7fa4\u96c6<br \/>\n\u8d77\u52d5\uff1a\u542f\u52a8AKS\u7fa4\u96c6<\/h3>\n<pre class=\"post-pre\"><code>$ az aks stop -g rg_ituru_aks01 -n aks_ituru_cp01\r\n$ az aks start -g rg_ituru_aks01 -n aks_ituru_cp01\r\n<\/code><\/pre>\n<h3>\u68c0\u67e5\u662f\u5426\u6709\u9519\u8bef\u4fe1\u606f\u3002<\/h3>\n<pre class=\"post-pre\"><code>$ kubectl get events\r\n$ kubectl logs ksql-client2\r\n<\/code><\/pre>\n<hr \/>\n<h2>\u603b\u7ed3<\/h2>\n<p>\u6211\u5df2\u7ecf\u786e\u8ba4\u4e86\u4f7f\u7528ksql cli\u5728Confluent Platform\u4e0a\u53ef\u4ee5\u914d\u7f6e\u6d41\u3002\u7136\u800c\uff0c\u5f53\u6570\u636e\u6d41\u8fdb\u6765\u65f6\uff0c\u6211\u4eec\u9700\u8981\u518d\u6b21\u8c03\u6574\u6570\u636e\u8f6c\u6362\u65b9\u6cd5\u7b49\u3002\u4e0b\u6b21\u6211\u60f3\u8981\u5c1d\u8bd5\u5b9e\u9645\u8fdb\u884c\u6570\u636e\u6d41\u3002<\/p>\n<h3>\u8bf7\u63d0\u4f9b\u76f8\u5173\u4fe1\u606f\u3002<\/h3>\n<p>\u6211\u5df2\u53c2\u8003\u4ee5\u4e0b\u4fe1\u606f\u3002<\/p>\n<p>Confluent\u5e73\u53f0\u7684\u9ad8\u7ea7\u914d\u7f6e\u9009\u9879<br \/>\nKubernetes\u4e0a\u7684KSQL\u5e94\u7528\u90e8\u7f72\u793a\u4f8b<br \/>\n\u914d\u7f6eksqlDB CLI<br \/>\nksqlDB<br \/>\nksqlDB\u6587\u6863<br \/>\n\u521b\u5efa\u6d41<br \/>\nKSQL\u5b9e\u4f8b<br \/>\n\u914d\u7f6e\u952e\u8f6c\u6362\u5668\u548c\u503c\u8f6c\u6362\u5668<br \/>\n\u4f7f\u7528\u5e26\u6709\u6a21\u5f0f\u6ce8\u518c\u8868\u7684Kafka Connect<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u8981 Confluent for Kubernetes (CFK) \u662f\u4e00\u4e2a\u4e91\u539f\u751f\u7684\u63a7\u5236\u5e73\u53f0\uff0c\u7528\u4e8e\u5728\u79c1\u6709\u4e91\u73af\u5883\uff08 [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-46858","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 - KSQL \u6d41\u521b\u5efa\u90e8\u5206 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u4f7f\u7528-confluent-for-kubernetes-\u5728-aks-\u4e0a\u914d\u7f6e-confluent-\u5e73\u53f0-ksql-\u6d41\u521b\u5efa\u90e8\u5206\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 - KSQL \u6d41\u521b\u5efa\u90e8\u5206\" \/>\n<meta property=\"og:description\" content=\"\u7b80\u8981 Confluent for Kubernetes (CFK) \u662f\u4e00\u4e2a\u4e91\u539f\u751f\u7684\u63a7\u5236\u5e73\u53f0\uff0c\u7528\u4e8e\u5728\u79c1\u6709\u4e91\u73af\u5883\uff08 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u4f7f\u7528-confluent-for-kubernetes-\u5728-aks-\u4e0a\u914d\u7f6e-confluent-\u5e73\u53f0-ksql-\u6d41\u521b\u5efa\u90e8\u5206\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-07T01:57:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T23:18:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b36913a08637a6988b9\/4-0.png\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/\",\"name\":\"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 - KSQL \u6d41\u521b\u5efa\u90e8\u5206 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-09-07T01:57:48+00:00\",\"dateModified\":\"2024-04-28T23:18:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 &#8211; KSQL \u6d41\u521b\u5efa\u90e8\u5206\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 - KSQL \u6d41\u521b\u5efa\u90e8\u5206 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u4f7f\u7528-confluent-for-kubernetes-\u5728-aks-\u4e0a\u914d\u7f6e-confluent-\u5e73\u53f0-ksql-\u6d41\u521b\u5efa\u90e8\u5206\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 - KSQL \u6d41\u521b\u5efa\u90e8\u5206","og_description":"\u7b80\u8981 Confluent for Kubernetes (CFK) \u662f\u4e00\u4e2a\u4e91\u539f\u751f\u7684\u63a7\u5236\u5e73\u53f0\uff0c\u7528\u4e8e\u5728\u79c1\u6709\u4e91\u73af\u5883\uff08 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u4f7f\u7528-confluent-for-kubernetes-\u5728-aks-\u4e0a\u914d\u7f6e-confluent-\u5e73\u53f0-ksql-\u6d41\u521b\u5efa\u90e8\u5206\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-09-07T01:57:48+00:00","article_modified_time":"2024-04-28T23:18:02+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b36913a08637a6988b9\/4-0.png"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"10 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/","name":"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 - KSQL \u6d41\u521b\u5efa\u90e8\u5206 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-09-07T01:57:48+00:00","dateModified":"2024-04-28T23:18:02+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6211\u5c1d\u8bd5\u4f7f\u7528 Confluent for Kubernetes \u5728 AKS \u4e0a\u914d\u7f6e Confluent \u5e73\u53f0 &#8211; KSQL \u6d41\u521b\u5efa\u90e8\u5206"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8-confluent-for-kubernetes-%e5%9c%a8-aks-%e4%b8%8a%e9%85%8d%e7%bd%ae-confluent-%e5%b9%b3%e5%8f%b0-ksql-%e6%b5%81%e5%88%9b%e5%bb%ba%e9%83%a8%e5%88%86\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=46858"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46858\/revisions"}],"predecessor-version":[{"id":83833,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46858\/revisions\/83833"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=46858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=46858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=46858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}