¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä..."/> Óг¡Ï·Ëû¶Ô×Ų¡´²Éϵĸ¸Ç×˵¡°µÈÎÒ¹«Ë¾ÉÏÊоͽÓÄãÈ¥Öβ¡¡±£¬µ¯Ä»¶¼ÔÚË¢¡°±ðѧËû»±ý¡±¡£"/>
¡¶¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...¡·¾çÇé¼ò½é£ºÓг¡Ï·Ëû¶Ô×Ų¡´²Éϵĸ¸Ç×˵µÈÎÒ¹«Ë¾ÉÏÊоͽÓÄãÈ¥Öβ¡µ¯Ä»¶¼ÔÚË¢±ðѧËû»±ýË»¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...ÀîÄÌÄÌο½å³ó¹Ã˵µÀ£ºº¢×Ó±ðÅÂÒ»¶¨ÄÜÕÒµ½ÄãµÜµÜµÄËûÒ»¶¨»áûʵÄ
¡¶¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...¡·ÊÓÆµËµÃ÷£ºËÙËÙ¾ÈÖÎÀîºëºÆÃæÁÙ½ÀöµÄÆòÇóÃæÁÙÁÖº£ÇǵÄÉúËÀØü¹Øº«ÄÈÏÝÈëÁËØ¨¹ÅδÓеÄÄæ¾³Apache PulsarѧϰÌõ¼Ç14: ʹÓÃHelmÔÚKubernetes¼¯ÈºÖа²ÅÅPulsarÔ´´2021-12-31 18:22¡¤¼Ü¹¹Ð¡°×ʱ¼ä¹ýµÃ½ÏÁ¿¾ÃÁËÔÚ×îÏȽñÌìµÄѧϰ֮ǰÏÈ»ØÊ×Ò»ÏÂÇ°ÃæÒѾѧϰµÄ13½ÚµÄÄÚÈÝ0.½×¶ÎÎÂϰPulsarÊÇÒ»¸öÖ§³Ö¶à×â»§µÄ¡¢¸ßÐÔÄܵġ¢ÂþÑÜʽµÄPub-SubÐÂÎÅϵͳÏàʶPulsarµÄ¼Ü¹¹PulsarÌṩÁËÒ»¸ö±ÈCluster¸ü¸ß¼¶±ðµÄÁýͳInstanceÒ»¸öPulsar InstanceÓɶà¸öPulsar Cluster×é³ÉÒ»¸öInstanceÖеÄClusterÖ®¼ä¿ÉÒÔÏ໥¿çµØÇø¸´ÖÆÊý¾Ýµ¥¸öPulsar¼¯ÈºÓÉÒÔϲ¿·Ö×é³É:Pulsar Proxy: ÊÇÎÞ״̬µÄProxy×÷Ϊ¼¯ÈºµÄÖÇÄÜ·ÓɲãÊÇÈÏÕæPulsar¿Í»§¶ËÓëPulsar¼¯Èº½»»¥µÄÍ³Ò»Íø¹ØPulsar Brokers: Ò²ÊÇÎÞ״̬µÄÊǼ¯ÈºµÄ·þÎñ²ãProxy»á½«¿Í»§¶ËµÄ»á¼ûÇëÇóת·¢µ½×¼È·µÄBrokerÉÏBroker×÷Ϊ·þÎñ²ãÓëPulsarµÄ´æ´¢²ã¾ÙÐн»»¥Bookies: Ò»¸ö¼¯ÈºÓжà¸öBookie½Úµã(×é³ÉBookeeper¼¯Èº)ÈÏÕæÐÂÎŵij¤ÆÚ»¯´æ´¢Zookeeper: ÓÃÓÚ¼¯Èº¼¶±ðµÄÉèÖúÍе÷²¢´æ´¢Pulsar¼¯ÈºµÄËùÓÐÔªÊý¾ÝÒÔdockerÈÝÆ÷ÔËÐе¥»úPulsarѧϰʹÓÃÏÂÁîÐй¤¾ßpulsar-admin½¨Éètenant¡¢namespace¡¢topicÏàʶPulsar Admin REST APItenant¡¢namespace¡¢topicµÄ»ù±¾¿´·¨Pulsar»ùÓÚ×â»§¡¢ÃüÃû¿Õ¼ä¡¢Ö÷ÌâµÄÂß¼ÌõÀí½á¹¹Ö§³Ö¶à×â»§·ÖÇøTopicµÄ¿´·¨Topic URLÃûÌó¤ÆÚ»¯TopicºÍ·Ç³¤ÆÚ»¯TopicµÄ¿´·¨Éú²úÕߺÍÏûºÄÕß¡¢¶©ÔĺͶ©ÔÄģʽPulsarÖ§³Ö: exclusive(¶ÀÍÌ), failover(¹ÊÕÏ×ªÒÆ/ÔÖ±¸), shared(¹²Ïí), key-shared(»ùÓÚkeyµÄ¹²Ïíģʽ) 4Öж©ÔÄģʽʹÓÃÏÂÁîÐй¤¾ßpulsar-client¾ÙÐÐÉú²úÕߺÍÏûºÄÕß²âÊÔʹÓÃPulsar Java¿Í»§¶Ë¿â½¨ÉèÉú²úÕß¡¢ÏûºÄÕß¡¢ReaderÏûºÄÕß¶Ë¿ÉÒÔʹÓÃ"ͬ²½ÎüÊÕÐÂÎÅ", "Òì²½ÎüÊÕÐÂÎÅ", "MessageListenerÎüÊÕ" 3ÖÖģʽÆäÖÐMessageListener×Ô´øÏ̳߳ؽ¨ÉèÏûºÄÕßʱ¿ÉÒÔÉèÖÃÏûºÄÕßµÄÅúÁ¿ÎüÊÕÕ½ÂÔ¶àÖ÷Ìâ¶©ÔÄ: ÉèÖõ¥¸öÏûºÄÕß¶©ÔĶà¸öÖ÷ÌâÏûºÄÒì³£´¦Öóͷ£¿ÉÒÔʹÓÃ"ÎÞÏÞÖØÊÔ", "²¶»ñ²¢ºöÂÔÒì³£", "ËÀÐÅÖ÷Ì⣨Dead Letter Topic)"ÈýÖÖ·½·¨Ê¹ÓÃÐÂÎÅReader¿ÉÒÔÓÉÓû§×Ô¼ºÊÖ¶¯ÔÚTopicÖж¨Î»¶ÁÈ¡ÏëÒª¶ÁÈ¡µÄÐÂÎÅʹÓÃPulsar Go¿Í»§¶Ë¿âÏûºÄÕß¶ËÖ§³Öconsumer.Receive()ºÍconsumer.Chan()Á½ÖÖ·½·¨ÏûºÄÐÂÎÅǰÕß¶Ôchannel¹Ø±ÕºÍcontext cancelµÄÇéÐÎ×öÁË·â×°ºóÕßÒªÎÒÃÇ×Ô¼º´¦Öóͷ£ºÍchannelµÄ½»»¥µ«Ò²ÌṩÁË×î´óµÄÎÞаÐÔ¶àÖ÷Ìâ¶©ÔÄËÀÐÅÕ½ÂÔºÍËÀÐÅÖ÷ÌâʹÓÃÐÂÎÅReaderʹÓÃPulsar Schema¹ÜÀíÐÂÎÅÊý¾ÝµÄÀàÐÍÇå¾²ÐÔWebͼÐλ¯¹ÜÀí¹¤¾ßPulsar ManagerÑÓ³ÙÐÂÎÅͶµÝÌØÕ÷Ö¸¶¨¶à³¤Ê±¼äºóͶµÝdeliverAfterÖ¸¶¨ÔÚδÀ´Ä³¸öʱ¼äµãͶµÝdeliverAt·ÖÇøTopicºÍ·ÓÉģʽÈÏÖ¤ºÍÊÚȨ¿ªÆôJWTÉí·ÝÈÏÖ¤ÊÚȨºÍȨÏÞ¹ÜÀíÇ°ÃæµÄѧϰһֱÊÇ»ùÓÚÒÔdockerÈÝÆ÷Æô¶¯µÄµ¥»úPulsar½ñÌ콫ѧϰʹÓÃHelmÔÚKubernetes¼¯ÈºÖа²ÅÅPulsar¼¯Èº1.ÇéÐÎ×¼±¸ÕâÀïʹÓõÄKubernetes¼¯ÈºµÄ°æ±¾ÊÇ1.22.4HelmµÄ°æ±¾ÊÇ3.7.11.1 Pulsar¼¯Èº×é¼þºÍK8S Node½ÚµãÍýÏëÏÂÃæ×öÒ»ÏÂPulsar¼¯Èº¸÷¸ö×é¼þ°²ÅŽڵãµÄÍýÏëʹÓÃPulsar¹Ù·½µÄHelm Chart°²ÅÅʱ¿ÉÑ¡Ôñ°²ÅŸ÷¸ö×é¼þ ÔÚºó±ßµÄÉèÖÃÖн«½ûÓÃ¼à¿ØÏà¹ØµÄ×é¼þ(promethues, grafanaµÈ)ÎÒÃÇÕâÀïÑ¡ÔñÒÔºóʵÑéʹÓÃÍⲿµÄÈ«¾ÖPrometheusʵÏÖ¶ÔPulsar¼¯ÈºµÄ¼à¿Ø±¾½ÚÑ¡Ôñ°²Åŵļ¯Èº×é¼þÈçÏÂ:proxy: ÎÞ״̬, µ«pulsarµÄhelm chartʹÓÃStatefulSet°²ÅÅbroker: ÎÞ״̬, µ«pulsarµÄhelm chartʹÓÃStatefulSet°²ÅÅbookie: ÓÐ״̬, pulsarµÄhelm chartʹÓÃStatefulSet°²ÅÅzookeeper: ÓÐ״̬, pulsarµÄhelm chartʹÓÃStatefulSet°²ÅÅrecovery: ÎÞ״̬, µ«pulsarµÄhelm chartʹÓÃStatefulSet°²ÅÅtoolset: ÎÞ״̬, µ«pulsarµÄhelm chartʹÓÃStatefulSet°²ÅÅpulsar-manager: ÎÞ״̬, pulsarµÄhelm chartʹÓÃDeployment°²ÅÅ×¢ÖØ, pulsar-managersËäÈ»ÊÇÎÞ״̬µÄµ«ÓÉÓÚËüÐèҪʹÓÃPostgreSQLÊý¾Ý¿âpulsar-managersµÄdocker¾µÏñÖÐÄÚÖÃÒ»¸öPostgreSQL, Õâ¸öÎÒÃÇÔÚºó±ßµÄÉèÖÃÖн«¸ÄΪʹÓü¯ÈºÍⲿµÄPostgreSQLÏÂÃæËµÒ»ÏÂÒÔÉϸ÷¸ö×é¼þµÄ°²ÅŽڵãÑ¡Ôñ¹ØÓÚproxy, broker, recovery, toolset, pulsar-managerÕâ5¸öÎÞ״̬×é¼þ¿ÉÒÔÈÃk8s½«Æäµ÷Àíµ½í§Òâ½ÚµãÉϹØÓÚbookie, zookeeperÕâ2¸öÓÐ״̬×é¼þÐèÒªÎÒÃÇÆ¾Ö¤Æä´æ´¢¾íµÄÀàÐͽ«ÆäÍýÏëµ½ºÏÊʵÄk8s½ÚµãÎÒÃÇÔÚÏßÉÏÇéÐιØÓÚÓÐ״̬·þÎñµÄ°²ÅÅÔÚ´æ´¢¾íµÄÑ¡ÔñÉÏΪÁ˸üºÃµÄÐÔÄÜÒ»Ñùƽ³£¶¼ÊÇÑ¡ÔñLocal Persistent Volumes ÔÚÒò´ËÈôÊÇÄãÔÚ¼ÆÆëÕû¸öÏßÉϰ汾µÄPulsar¼¯Èº°²Åŵϰ¹ØÓÚbookieºÍzookeeperÒ»¶¨ÐèÒªµ¥¶ÀµÄ×ÔÁ¦µÄk8s½Úµã²¢Ê¹ÓÃÕâЩ½ÚµãÉϽ¨ÉèµÄLocal PV ÀýÈçÒ»¸öÏßÉÏÉú²ú¿ÉÓõÄPulsar¼¯Èº¿ÉÄÜÍýÏëÈçÏÂ:pulsar zookeeper¼¯ÈºÖÁÉÙÐèÒª3¸ö×ÔÁ¦µÄk8s½Úµã, ÔÚÕâЩ½ÚµãÉϽ¨ÉèzookeeperµÄlocal pvpulsar bookeeper¼¯Èº(bookie½Úµã×é³É)ƾ֤ÍýÏëµÄÈÝÁ¿ÐèÒªN¸ö×ÔÁ¦µÄk8s½Úµã, ÔÚÕâЩ½ÚµãÉϽ¨ÉèbookieµÄlocal pvÈôÊǺóÐøÐèÒªÀ©ÈÝÔöÌíbookie½ÚµãʱֻÐèÒªÓÐеĽ¨ÉèºÃlocal pvµÄk8s½Úµã²¢¶ÔbookieµÄStatefulSetÀ©Èݼ´¿Épulsar proxy, brokerµÈÎÞ״̬·þÎñÖ»ÐèÒªÓÐ×ã¹»µÄÊýÄ¿µÄk8s½Úµã²¢ÔÚÐèҪʱ°´ÐèÀ©Èݼ´¿ÉÒò±¾ÎÄÕâÀïÓÃÓÚʵÑéµÄk8s¼¯Èº×ÊÔ´ÓÐÏÞÒÔÊÇÖ»¹Ü½«ÉÏÃæ¸÷×é¼þÔÚ3¸ök8s½ÚµãÉϻ첿½«Ò»¸öÓÃÓÚ²âÊÔÇéÐεĵÄPulsar¼¯ÈºÍýÏëÈçÏÂ:k8s½Úµã°²ÅÅpulsar×é¼þ±¸×¢node1zookeeper-0, bookie-0, broker-0, proxy-0ÏßÉÏÇéÐÎbookieºÍzookeeperÒ»¶¨ÒªÔÚµ¥¶ÀµÄ½ÚµãÉÏnode2zookeeper-1, bookie-1, broker-1, proxy-1ÏßÉÏÇéÐÎbookieºÍzookeeperÒ»¶¨ÒªÔÚµ¥¶ÀµÄ½ÚµãÉÏnode3zookeeper-2, bookie-2, broker-2, proxy-2ÏßÉÏÇéÐÎbookieºÍzookeeperÒ»¶¨ÒªÔÚµ¥¶ÀµÄ½ÚµãÉÏnode1»ònode2»ònode3recovery-0, toolset-0, pulsar-manager»ùÓÚÉÏÃæ²âÊÔÇéÐεÄÍýÏëÎÒÃǽ«node1~node3Èý¸ö½Úµã´òÉÏLabelºÍTaint:kubectl label node node1 node-role.kubernetes.io/pulsar=pulsarkubectl label node node2 node-role.kubernetes.io/pulsar=pulsarkubectl label node node3 node-role.kubernetes.io/pulsar=pulsarkubectl taint nodes node1 dedicated=pulsar:NoSchedulekubectl taint nodes node2 dedicated=pulsar:NoSchedulekubectl taint nodes node3 dedicated=pulsar:NoScheduleLabel node-role.kubernetes.io/pulsar=pulsarÓÃÓÚ±ê¼Ç½ÚµãÊÇרÃÅÓÃÓÚÔËÐÐpulsar¼¯Èº×é¼þµÄk8s½ÚµãTaint dedicated=pulsar:NoSchedule±»´òµ½½ÚµãÉϺóĬÈÏÉèÖÃÏÂk8s¼¯ÈºÖÐµÄÆäËû²»ÊôÓÚpulsar¼¯Èº×é¼þµÄpod½«²»»á±»µ÷Àíµ½Õâ3¸ö½ÚµãÉϴ˺ó±ßÎÒÃǽ«Òª°²ÅŵÄpulsar×é¼þÉϽ«»áʹÓÃTolerationÉèÖÃÔÊÐídedicated=pulsar:NoScheduleµÄTaint×¢ÖØÕâÀïÖ»ÊÇÆ¾Ö¤²âÊÔÇéÐÎPulsar¼¯ÈºµÄÍýÏë×öÁËÉÏÃæµÄLabelºÍTaintµÄÉèÖÃÈôÊÇÊÇÉú²úÇéÐÎÕâÀïµÄLabelºÍTaintÓ¦¸Ã×ö¸üºÏÀíºÍϸÁ£¶ÈµÄÍýÏëÈ·±£ÊµÏÖÉÏÃæÉú²ú¿ÉÓÃPulsar¼¯ÈºµÄNode½ÚµãÍýÏë1.2 Pulsar¼¯Èº×é¼þÈÝÆ÷¾µÏñ×¼±¸Ç°ÃæÎÒÃÇѡժҪ°²ÅÅPulsar¼¯ÈºµÄproxy, broker, bookie, zookeeper, recovery, toolset, pulsar-manager 7´ó×é¼þÆäÖÐproxy, broker, bookie, zookeeper, recovery, toolsetµÄ¹Ù·½ÈÝÆ÷¾µÏñ¶¼ÊÇapachepulsar/pulsar-all pulsar-managerµÄ¹Ù·½¾µÏñÊÇapachepulsar/pulsar-manager±¾ÎÄʹÓõÄpulsar¹Ù·½µÄhelm chart https://github.com/apache/pulsar-helm-chart/releasespulsar-helm-chartµÄ°æ±¾Îª2.7.7¸Ã°æ±¾ÖÐpulsarµÄ°æ±¾Îª2.7.4, pulsar-manager°æ±¾Îªv0.1.0:apachepulsar/pulsar-all:2.7.4apachepulsar/pulsar-manager:v0.1.0×¢ÖØÓÉÓÚpulsar-manager:v0.1.0ÓÐÕâ¸öISSUE https://github.com/apache/pulsar-helm-chart/issues/133ÖÐÐÎòµÄÎÊÌâÒÔÊÇÔÚºó±ßµÄ°²ÅŽ«¾µÏñpulsar-manager:v0.1.0Ìæ»»³ÉÁËpulsar-manager:v0.2.0ΪÁËÌá¸ßЧÂÊÕâÀォapachepulsar/pulsar-all:2.7.4ºÍapachepulsar/pulsar-manager:v0.2.0ÕâÁ½¸ö¾µÏñת´æµ½ÁËk8s¼¯ÈºËùʹÓõÄ˽ÓоµÏñ¿ÍÕ»ÖÐÀýÈç:harbor.example.com/library/apachepulsar/pulsar-all:2.7.4harbor.example.com/library/apachepulsar/pulsar-manager:v0.2.01.3 ½¨ÉèJWTÈÏÖ¤ËùÐèµÄK8S SecretÕâÀï°²ÅŵÄPulsar¼¯ÈºÐèÒªÔÚÇå¾²ÉÏ¿ªÍ¨JWTÈÏÖ¤Æ¾Ö¤Ç°ÃæÑ§Ï°µÄÄÚÈÝJWTÖ§³Öͨ¹ýÁ½ÖÖ²î±ðµÄÃØÔ¿ÌìÉúºÍÑéÖ¤Token:¶Ô³ÆÃØÔ¿£ºÊ¹Óõ¥¸öSecret keyÀ´ÌìÉúºÍÑéÖ¤Token·Ç¶Ô³ÆÃØÔ¿£º°üÀ¨ÓÉ˽ԿºÍ¹«Ô¿×é³ÉµÄÒ»¶ÔÃÜԿʹÓÃPrivate keyÌìÉúTokenʹÓÃPublic keyÑéÖ¤TokenÍÆ¼öʹÓ÷ǶԳÆÃÜÔ¿µÄ·½·¨ÐèÒªÏÈÌìÉúÃÜÔ¿¶ÔÔÙÓÃÃØÔ¿ÌìÉútokenÓÉÓÚPulsar±»°²ÅÅÔÚK8S¼¯ÈºÖÐÔÚK8S¼¯ÈºÖд洢ÕâÐ©ÃØÔ¿ºÍTokenµÄ×îºÃµÄ·½·¨ÊÇʹÓÃK8SµÄSecretpulsar-helm-chartרÃÅÌṩÁËÒ»¸öprepare_helm_release.sh¾ç±¾¿ÉÒÔÓÃÀ´ÌìÉúÕâЩSecretÏÂÃæÎÒÃǽ«pulsar-helm-chartµÄÔ´Âëcloneµ½K8SµÄ¿ØÖƽڵãÉÏ(kubectlºÍhelm¿ÉÓõĽڵã):git clone -b pulsar-2.7.7 --depth 1 https://github.com/apache/pulsar-helm-chart.gitcd pulsar-helm-chart/Ö´ÐÐÏÂÃæµÄÏÂÁîÌìÉúÃØÔ¿¶ÔºÍTokenµÄSecretµÄManifest:./scripts/pulsar/prepare_helm_release.sh \ -n pulsar \ -k pulsar \ -lÉÏÃæµÄÏÂÁîÖÐ:-nÖ¸¶¨µÄÌìÉúSecret ManifestÖÐ×°ÖõÄÃüÃû¿Õ¼äÕâÀïÎÒÊǽ«Æä°²Åŵ½K8SÖеÄpulsar namespaceÖÐÒÔÊÇÖ¸¶¨ÎªpulsarËäȻҲ¿ÉÒÔÖ¸¶¨°²Åŵ½ÆäËûµÄnamespaceÖÐ-kÖ¸¶¨µÄÊÇʹÓÃhelm°²ÅÅʱµÄhelm releaseÃû³ÆÕâÀïÖ¸¶¨Îªpulsar-lÖ¸¶¨Ö»½«ÌìÉúµÄÄÚÈÝÊä³öµÖ´ïÍâµØ¶ø²»»á×Ô¶¯°²Åŵ½K8SÖнÏÁ¿Ï²»¶ÕâÖÖÊÖ¶¯µÄ·½·¨ÓÉÓÚÒ»ÇнÏÁ¿¿É¿Ø×¢ÖØÕâ¸ö¾ç±¾ÉÐÓÐÒ»¸ö-s,--symmetric²ÎÊýÈôÊǸøÕâ¸ö²ÎÊýµÄ»°JWTÈÏÖ¤½«Ê¹ÓöԳÆÃØÔ¿µÄ·½·¨ÕâÀïûÓиøÕâ¸ö²ÎÊý¾ÍʹÓ÷ǶԳÆÃØÔ¿µÄ·½·¨Ö´ÐÐÉÏÃæµÄ¾ç±¾»áÊä³öÒÔÏÂÄÚÈÝ:generate the token keys for the pulsar cluster---The private key and public key are generated to ... successfully.apiVersion: v1data: PRIVATEKEY: <...> PUBLICKEY: <...>kind: Secretmetadata: creationTimestamp: null name: pulsar-token-asymmetric-key namespace: pulsargenerate the tokens for the super-users: proxy-admin,broker-admin,admingenerate the token for proxy-admin---pulsar-token-asymmetric-keyapiVersion: v1data: TOKEN: <...> TYPE: YXN5bW1ldHJpYw==kind: Secretmetadata: creationTimestamp: null name: pulsar-token-proxy-admin namespace: pulsargenerate the token for broker-admin---pulsar-token-asymmetric-keyapiVersion: v1data: TOKEN: <...> TYPE: YXN5bW1ldHJpYw==kind: Secretmetadata: creationTimestamp: null name: pulsar-token-broker-admin namespace: pulsargenerate the token for admin---pulsar-token-asymmetric-keyapiVersion: v1data: TOKEN: <...> TYPE: YXN5bW1ldHJpYw==kind: Secretmetadata: creationTimestamp: null name: pulsar-token-admin namespace: pulsar-------------------------------------The jwt token secret keys are generated under: - 'pulsar-token-asymmetric-key'The jwt tokens for superusers are generated and stored as below: - 'proxy-admin':secret('pulsar-token-proxy-admin') - 'broker-admin':secret('pulsar-token-broker-admin') - 'admin':secret('pulsar-token-admin')´ÓÊä³ö¿ÉÒÔ¿´³ö¸Ã¾ç±¾ÌìÉúÁË4¸öK8S SecretµÄManifest:pulsar-token-asymmetric-keyÕâ¸öSecretÖÐÊÇÓÃÓÚÌìÉúTokenºÍÑéÖ¤TokenµÄ˽ԿºÍ¹«Ô¿pulsar-token-proxy-adminÕâ¸öSecretÖÐÊÇÓÃÓÚproxyµÄ³¬µÈÓû§½ÇÉ«Tokenpulsar-token-broker-adminÕâ¸öSecretÖÐÊÇÓÃÓÚbrokerµÄ³¬µÈÓû§½ÇÉ«Tokenpulsar-token-adminÕâ¸öSecretÖÐÊÇÓÃÓÚ¹ÜÀí¿Í»§¶ËµÄ³¬µÈÓû§½ÇÉ«Token½ÓÏÂÀ´ÊÖ¶¯½«Õâ4¸öSecretʹÓÃkubectl apply½¨Éèµ½K8SµÄpulsarÃüÃû¿Õ¼äÖÐ ½¨ÉèÍê³Éºó¿ÉÒÔʹÓÃkubectlÕÒµ½ËüÃÇ:kubectl get secret -n pulsar | grep pulsar-tokenpulsar-token-admin Opaque 2 5mpulsar-token-asymmetric-key Opaque 2 5mpulsar-token-broker-admin Opaque 2 5mpulsar-token-proxy-admin Opaque 2 5m1.4 ½¨ÉèZookeeperºÍBookieµÄLocal PVƾ֤°²ÅÅPulsarµÄK8S½ÚµãµÄÍýÏëÏÂÃæÐèҪΪzookeeper, bookieËùÔڵĽڵãÔÚK8SÉϽ¨ÉèLocal Persistent Volume×¢ÖØÃ¿¸özookeeper½ÚµãÐèÒªÒ»¸ödataµÄlocal volumeÿ¸öbookie½ÚµãÐèÒªjournalºÍledgers¹²Á½¸ölocal volumeÔÚ½¨ÉèLocal PV֮ǰÐèҪȷÈÏÒ»ÏÂk8sÖб£´æStorageClasslocal-storageÈôÊÇûÓпÉÒÔʹÓÃÏÂÃæµÄmanifest½¨ÉèapiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: local-storageprovisioner: kubernetes.io/no-provisionervolumeBindingMode: WaitForFirstConsumerreclaimPolicy: Retain×¢ÖØÏÖÔÚµÄK8SÖв»ÔÚÖ±½ÓÌṩlocal volumeµÄprovisionerÕâÀïҲûÓÐʹÓÃprovisionerÒòÒÔºóÐø¶Ôlocal volumeµÄ½¨ÉèºÍ¹ÜÀí¶¼ÊÇÐèÒªK8S¼¯Èº¹ÜÀíÔ±µÄÊÖ¶¯¾ÙÐÐ Ò²ÊÇ˵ÏÖÔÚKubernetes½¹µãÖв»°üÀ¨¶Ô¶ÔÍâµØ¾í¾ÙÐж¯Ì¬·¢·ÅºÍ¹ÜÀíµÄprovisionerÈôÊÇÏëÒªÌåÑ鶯̬·¢·ÅºÍ¹ÜÀíµÄ¹¦Ð§¿ÉÒÔÊÔÒ»ÏÂÓÉRancherÌṩµÄLocal Path ProvisionerÎÒÕâÀïÒÀȻʹÓÃÊÖ¶¯¹ÜÀíµÄ·½·¨¼´Í¨¹ýÊÖ¶¯ÔÚK8S½ÚµãÉϽ¨ÉèLocal VolumeÊÖ¶¯°ó¶¨Local VolumeÓëPulsar ZookeeperºÍBookieµÄPVC(PersistentVolumeClaim)Ö®¼äµÄ¹ØÏµÏÂÃæÏÈÊÖ¶¯ÔÚnode1, node2, node3ÉϽ¨Éèlocal volume¶ÔÓ¦µÄÊý¾ÝĿ¼:mkdir -p /home/puslar/data/zookeeper-datamkdir -p /home/puslar/data/bookie-data/ledgersmkdir -p /home/puslar/data/bookie-data/journalzookeeper dataµÄlocal pvµÄmanifestÈçÏÂ:---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-zookeeper-data-pulsar-zookeeper-0spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/zookeeper-data claimRef: name: pulsar-zookeeper-data-pulsar-zookeeper-0 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node1---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-zookeeper-data-pulsar-zookeeper-1spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/zookeeper-data claimRef: name: pulsar-zookeeper-data-pulsar-zookeeper-1 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node2---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-zookeeper-data-pulsar-zookeeper-2spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/zookeeper-data claimRef: name: pulsar-zookeeper-data-pulsar-zookeeper-2 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node3ÉÏÃæµÄmanifestÈÔÖн«3¸öLocal PVͨ¹ýnodeAffinity½¨Éè²¢¹ØÁªµ½µ½node1~node3ÉÏͬʱʹÓÃclaimRef½«Õâ3¸öLocal PVÓë¼´½«ÔÚK8S¼¯ÈºÖа²ÅŵÄzookeeper SatefulSetÖеÄPVC°ó¶¨ ʹÓÃkubectl apply½¨ÉèÉÏÃæµÄmanifestbookie ledgersºÍjournalµÄlocal pvµÄmanifestÈçÏÂ:---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-bookie-ledgers-pulsar-bookie-0spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/bookie-data/ledgers claimRef: name: pulsar-bookie-ledgers-pulsar-bookie-0 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node1---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-bookie-journal-pulsar-bookie-0spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/bookie-data/journal claimRef: name: pulsar-bookie-journal-pulsar-bookie-0 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node1---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-bookie-ledgers-pulsar-bookie-1spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/bookie-data/ledgers claimRef: name: pulsar-bookie-ledgers-pulsar-bookie-1 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node2---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-bookie-journal-pulsar-bookie-1spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/bookie-data/journal claimRef: name: pulsar-bookie-journal-pulsar-bookie-1 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node2---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-bookie-ledgers-pulsar-bookie-2spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/bookie-data/ledgers claimRef: name: pulsar-bookie-ledgers-pulsar-bookie-2 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node3---apiVersion: v1kind: PersistentVolumemetadata: name: pulsar-bookie-journal-pulsar-bookie-2spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/puslar/data/bookie-data/journal claimRef: name: pulsar-bookie-journal-pulsar-bookie-2 namespace: pulsar nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node3ÉÏÃæµÄmanifestÈÔÖн«6¸öLocal PVͨ¹ýnodeAffinity½¨Éè²¢¹ØÁªµ½µ½node1~node3ÉÏͬʱʹÓÃclaimRef½«Õâ3¸öLocal PVÓë¼´½«ÔÚK8S¼¯ÈºÖа²ÅŵÄzookeeper SatefulSetÖеÄPVC°ó¶¨ ʹÓÃkubectl apply½¨ÉèÉÏÃæµÄmanifest1.5 ×¼±¸Pulsar ManagerµÄPostgreSQLÊý¾Ý¿âÕâÀï×¼±¸ÈÃPulsar ManagerʹÓÃÍⲿÊý¾Ý¿âÐèÒªÌáǰÔÚÍⲿµÄPostgreSQLÖн¨ÉèºÃÓû§ºÍÊý¾Ý¿â±í½á¹¹½¨ÉèÊý¾Ý¿âºÍÓû§:CREATE USER pulsar_manager WITH PASSWORD '
¶ÔÁ˾ÅÏöÌ칬Äã´³µÄÔõôÑùѪħµ¶Ê¥Ëæ¼´ÓÐЩÆÚ´ýµØÎʵÀ¶¡·î¿´×ÅǮûÉÙ»¨Ò»µãÏ£ÍûûÓгîµÄ¶¼Ë¯²»×žõÔõô°ì²Å»ª°Ñ»ÄɽÄð³É²èɽĨËûÔÚ´²ÉÏ·À´¸²È¥Ïë³öÁËÒ»Ìõ¶¾¼Æ
ËüÈ«Éí¶¼ÓÉʯ¿é×é³É³äÂú×ÅŨÓôµÄÍÁµÀµÀºÛÁúÉíºñÖØÁúÑÀÍðÈôʯÁÖ¹Å×¾´óÆøÍþÛÂÕ𺳹úÇì½Ú¼ÃÄÏ14¸ö»éÒö¹ÒºÅ´¦Îª°®¼Ó°àÖµ°à±íÐû²¼
2025-09-24 19:15:54