¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä..."/> Óг¡Ï·Ëû¶Ô×Ų¡´²Éϵĸ¸Ç×˵¡°µÈÎÒ¹«Ë¾ÉÏÊоͽÓÄãÈ¥Öβ¡¡± £¬µ¯Ä»¶¼ÔÚË¢¡°±ðѧËû»­±ý¡±¡£"/>

ÌÚ²©tengbo9885¹ÙÍø

¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...

¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...

¡¶¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...¡·¾çÇé¼ò½é£ºÓг¡Ï·Ëû¶Ô×Ų¡´²Éϵĸ¸Ç×˵µÈÎÒ¹«Ë¾ÉÏÊоͽÓÄãÈ¥Öβ¡µ¯Ä»¶¼ÔÚË¢±ðѧËû»­±ýË»¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...ÀîÄÌÄÌο½å³ó¹Ã˵µÀ£ºº¢×Ó±ðÅÂÒ»¶¨ÄÜÕÒµ½ÄãµÜµÜµÄËûÒ»¶¨»áûʵÄ

¡¶¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...¡·ÊÓÆµËµÃ÷£ºËÙËÙ¾ÈÖÎÀîºëºÆÃæÁÙ½­ÀöµÄÆòÇóÃæÁÙÁÖº£ÇǵÄÉúËÀØü¹Øº«ÄÈÏÝÈëÁËØ¨¹ÅδÓеÄÄæ¾³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 '';CREATE DATABASE pulsar_manager OWNER pulsar_manager;GRANT ALL PRIVILEGES ON DATABASE pulsar_manager to pulsar_manager;GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA pulsar_manager TO pulsar_manager;ALTER SCHEMA public OWNER to pulsar_manager;GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO pulsar_manager;GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO pulsar_manager;½¨Éè±í½á¹¹(½¨±í¾ç±¾¿ÉÒÔÔÚpulsar-managerµÄ¾µÏñÖÐÕÒµ½):CREATE TABLE IF NOT EXISTS environments ( name varchar(256) NOT NULL, broker varchar(1024) NOT NULL, CONSTRAINT PK_name PRIMARY KEY (name), UNIQUE (broker));CREATE TABLE IF NOT EXISTS topics_stats ( topic_stats_id BIGSERIAL PRIMARY KEY, environment varchar(255) NOT NULL, cluster varchar(255) NOT NULL, broker varchar(255) NOT NULL, tenant varchar(255) NOT NULL, namespace varchar(255) NOT NULL, bundle varchar(255) NOT NULL, persistent varchar(36) NOT NULL, topic varchar(255) NOT NULL, producer_count BIGINT, subscription_count BIGINT, msg_rate_in double precision , msg_throughput_in double precision , msg_rate_out double precision , msg_throughput_out double precision , average_msg_size double precision , storage_size double precision , time_stamp BIGINT);CREATE TABLE IF NOT EXISTS publishers_stats ( publisher_stats_id BIGSERIAL PRIMARY KEY, producer_id BIGINT, topic_stats_id BIGINT NOT NULL, producer_name varchar(255) NOT NULL, msg_rate_in double precision , msg_throughput_in double precision , average_msg_size double precision , address varchar(255), connected_since varchar(128), client_version varchar(36), metadata text, time_stamp BIGINT, CONSTRAINT fk_publishers_stats_topic_stats_id FOREIGN KEY (topic_stats_id) References topics_stats(topic_stats_id));CREATE TABLE IF NOT EXISTS replications_stats ( replication_stats_id BIGSERIAL PRIMARY KEY, topic_stats_id BIGINT NOT NULL, cluster varchar(255) NOT NULL, connected BOOLEAN, msg_rate_in double precision , msg_rate_out double precision , msg_rate_expired double precision , msg_throughput_in double precision , msg_throughput_out double precision , msg_rate_redeliver double precision , replication_backlog BIGINT, replication_delay_in_seconds BIGINT, inbound_connection varchar(255), inbound_connected_since varchar(255), outbound_connection varchar(255), outbound_connected_since varchar(255), time_stamp BIGINT, CONSTRAINT FK_replications_stats_topic_stats_id FOREIGN KEY (topic_stats_id) References topics_stats(topic_stats_id));CREATE TABLE IF NOT EXISTS subscriptions_stats ( subscription_stats_id BIGSERIAL PRIMARY KEY, topic_stats_id BIGINT NOT NULL, subscription varchar(255) NULL, msg_backlog BIGINT, msg_rate_expired double precision , msg_rate_out double precision , msg_throughput_out double precision , msg_rate_redeliver double precision , number_of_entries_since_first_not_acked_message BIGINT, total_non_contiguous_deleted_messages_range BIGINT, subscription_type varchar(16), blocked_subscription_on_unacked_msgs BOOLEAN, time_stamp BIGINT, UNIQUE (topic_stats_id, subscription), CONSTRAINT FK_subscriptions_stats_topic_stats_id FOREIGN KEY (topic_stats_id) References topics_stats(topic_stats_id));CREATE TABLE IF NOT EXISTS consumers_stats ( consumer_stats_id BIGSERIAL PRIMARY KEY, consumer varchar(255) NOT NULL, topic_stats_id BIGINT NOT NUll, replication_stats_id BIGINT, subscription_stats_id BIGINT, address varchar(255), available_permits BIGINT, connected_since varchar(255), msg_rate_out double precision , msg_throughput_out double precision , msg_rate_redeliver double precision , client_version varchar(36), time_stamp BIGINT, metadata text);CREATE TABLE IF NOT EXISTS tokens ( token_id BIGSERIAL PRIMARY KEY, role varchar(256) NOT NULL, description varchar(128), token varchar(1024) NOT NUll, UNIQUE (role));CREATE TABLE IF NOT EXISTS users ( user_id BIGSERIAL PRIMARY KEY, access_token varchar(256), name varchar(256) NOT NULL, description varchar(128), email varchar(256), phone_number varchar(48), location varchar(256), company varchar(256), expire BIGINT, password varchar(256), UNIQUE (name));CREATE TABLE IF NOT EXISTS roles ( role_id BIGSERIAL PRIMARY KEY, role_name varchar(256) NOT NULL, role_source varchar(256) NOT NULL, description varchar(128), resource_id BIGINT NOT NULL, resource_type varchar(48) NOT NULL, resource_name varchar(48) NOT NULL, resource_verbs varchar(256) NOT NULL, flag INT NOT NULL);CREATE TABLE IF NOT EXISTS tenants ( tenant_id BIGSERIAL PRIMARY KEY, tenant varchar(255) NOT NULL, admin_roles varchar(255), allowed_clusters varchar(255), environment_name varchar(255), UNIQUE(tenant));CREATE TABLE IF NOT EXISTS namespaces ( namespace_id BIGSERIAL PRIMARY KEY, tenant varchar(255) NOT NULL, namespace varchar(255) NOT NULL, UNIQUE(tenant, namespace));CREATE TABLE IF NOT EXISTS role_binding( role_binding_id BIGSERIAL PRIMARY KEY, name varchar(256) NOT NULL, description varchar(256), role_id BIGINT NOT NULL, user_id BIGINT NOT NULL);ÉÏÃæÒѾ­×öºÃÁ˰²ÅŵÄ×¼±¸ÊÂÇéÏÂÃæ½«Ê¹ÓÃHelmÔÚK8S¼¯ÈºÖа²ÅÅPulsar¼¯Èº2.ʹÓÃHelmÔÚK8SÖа²ÅÅPulsar´Óhttps://github.com/apache/pulsar-helm-chart/releasesÏÂÔØpulsar helm chart 2.7.7µ½K8SµÄ¿ØÖƽڵãÉÏ(kubectlºÍhelm¿ÉÓÃ)https://github.com/apache/pulsar-helm-chart/releases/download/pulsar-2.7.7/pulsar-2.7.7.tgz2.1 ¶¨ÖƱàдhelm chartµÄvalues.yaml¶¨ÖƱàдhelm chartµÄvalues.yamlÎļþÈçÏÂ, ¶¨ÖƵÄÄÚÈݽÏÁ¿¶àÏêϸ¼ûÏÂÃæÎļþµÄ×¢ÊÍ:auth: authentication: enabled: true # ¿ªÆôjwtÈÏÖ¤ provider: "jwt" jwt: usingSecretKey: false # jwtÈÏ֤ʹÓ÷ǶԳÆÃØÔ¿¶Ô authorization: enabled: true # ¿ªÆôÊÚȨ superUsers: # broker to broker communication broker: "broker-admin" # proxy to broker communication proxy: "proxy-admin" # pulsar-admin client to broker/proxy communication client: "admin"components: # ÆôÓõÄ×é¼þ autorecovery: true bookkeeper: true broker: true functions: true proxy: true pulsar_manager: true toolset: true zookeeper: truemonitoring: # ¹Ø±Õ¼à¿Ø×é¼þ, ºóÐøÊµÑéʹÓÃÍⲿPrometheus¶Ôpulsar¼¯Èº¾ÙÐÐ¼à¿Ø grafana: false prometheus: false node_exporter: falsevolumes: local_storage: true # Êý¾Ý¾íʹÓÃlocal storageproxy: # proxyµÄÉèÖÃ(ÕâÀïÊDzâÊÔÇéÐÎ, ½«proxyÒ²µ÷Àíµ½node1»ònode2»ònode3) nodeSelector: node-role.kubernetes.io/pulsar: pulsar tolerations: - key: "dedicated" operator: "Equal" value: "pulsar" effect: "NoSchedule" configData: PULSAR_PREFIX_authenticateMetricsEndpoint: "false"broker: # brokerµÄÉèÖÃ(ÕâÀïÊDzâÊÔÇéÐÎ, ½«proxyÒ²µ÷Àíµ½node1»ònode2»ònode3) nodeSelector: node-role.kubernetes.io/pulsar: pulsar tolerations: - key: "dedicated" operator: "Equal" value: "pulsar" effect: "NoSchedule" zookeeper: # brokerµÄÉèÖà replicaCount: 3 tolerations: - key: "dedicated" operator: "Equal" value: "pulsar" effect: "NoSchedule" volumes: data: # ÉèÖÃʹÓÃlocal pv, ÐèÒªÓëÇ°ÃæÊÖ¶¯½¨ÉèµÄlocal pvÐÅÏ¢Ò»Ö local_storage: true size: 20Gibookkeeper: # bookkeeperµÄÉèÖà replicaCount: 3 tolerations: - key: "dedicated" operator: "Equal" value: "pulsar" effect: "NoSchedule" volumes: journal: # ÉèÖÃʹÓÃlocal pv, ÐèÒªÓëÇ°ÃæÊÖ¶¯½¨ÉèµÄlocal pvÐÅÏ¢Ò»Ö local_storage: true size: 50Gi ledgers: # ÉèÖÃʹÓÃlocal pv, ÐèÒªÓëÇ°ÃæÊÖ¶¯½¨ÉèµÄlocal pvÐÅÏ¢Ò»Ö local_storage: true size: 50Gipulsar_manager: # pulsar_managerµÄÉèÖÃ(ÕâÀïÊDzâÊÔÇéÐÎ, ½«pulsar_managerÒ²µ÷Àíµ½node1»ònode2»ònode3) replicaCount: 1 admin: # ÎĵµÖÐÐÎòÕâÀïÊÇpulsar manager web½çÃæµÇÈÎÃü»§ÃÜÂ뵫ÏÖʵÊÜÆ­Ê¹ÓÃÍⲿPostgreSQLÊý¾Ý¿âʱÕâÀïÐèÒªÖ¸¶¨PostgreSQLµÄÊý¾Ý¿âºÍÃÜÂë²»ÖªµÀÊÇ·ñÊÇpulsar-helm-chart 2.7.7µÄÎÊÌâ user: pulsar_manager password: 05aM3Braz_M4RWpn configData: DRIVER_CLASS_NAME: org.postgresql.Driver URL: jdbc:postgresql://:5432/pulsar_manager # ÎĵµÖÐÐÎòÕâÀïPostgreSQLÊý¾Ý¿âµÄÃÜÂ뵫ÏÖʵÉÏÕâÀï²»¿ÉÖ¸¶¨USERNAMEºÍPASSWORD, ²»ÖªµÀÊÇ·ñÊÇpulsar-helm-chart 2.7.7µÄÎÊÌâ # USERNAME: pulsar_manager # PASSWORD: 05aM3Braz_M4RWpn LOG_LEVEL: INFO ## ¿ªÆôJWTÈÏÖ¤ºó, ÕâÀïÐèÒªÖ¸¶¨pulsar-token-adminÕâ¸öSecretÖеÄJWT Token JWT_TOKEN: autorecovery: # autorecoveryµÄÉèÖÃ(ÕâÀïÊDzâÊÔÇéÐÎ, ½«autorecoveryÒ²µ÷Àíµ½node1»ònode2»ònode3) replicaCount: 1 nodeSelector: node-role.kubernetes.io/pulsar: pulsar tolerations: - key: "dedicated" operator: "Equal" value: "pulsar" effect: "NoSchedule"toolset: # toolsetµÄÉèÖÃ(ÕâÀïÊDzâÊÔÇéÐÎ, ½«toolsetÒ²µ÷Àíµ½node1»ònode2»ònode3) replicaCount: 1 nodeSelector: node-role.kubernetes.io/pulsar: pulsar tolerations: - key: "dedicated" operator: "Equal" value: "pulsar" effect: "NoSchedule"images: # ¶Ô¸ö×é¼þʹÓÃ˽ÓоµÏñ¿ÍÕ»µÄÉèÖà imagePullSecrets: - regsecret # ˽ÓоµÏñ¿ÍÕ»µÄimage pull secret, ÐèÒªÌáǰÔÚk8sÃüÃû¿Õ¼äÖн¨Éè autorecovery: repository: harbor.example.com/library/apachepulsar/pulsar-all tag: 2.7.4 bookie: repository: harbor.example.com/library/apachepulsar/pulsar-all tag: 2.7.4 broker: repository: harbor.example.com/library/apachepulsar/pulsar-all tag: 2.7.4 functions: repository: harbor.example.com/library/apachepulsar/pulsar-all tag: 2.7.4 proxy: repository: harbor.example.com/library/apachepulsar/pulsar-all tag: 2.7.4 pulsar_manager: repository: harbor.example.com/library/apachepulsar/pulsar-manager tag: v0.2.0 zookeeper: repository: harbor.example.com/library/apachepulsar/pulsar-all tag: 2.7.4pulsar_metadata: component: pulsar-init image: # the image used for running `pulsar-cluster-initialize` job repository: harbor.example.com/library/apachepulsar/pulsar-all tag: 2.7.4ÓÉÓÚÄ¿½ñÔÚpulsar-helm-chart 2.7.7 ÖÐËÆºõ²»Ö§³ÖΪpulsar-initÉèÖÃ˽ÓпÍÕ»µÄimagePullSecretÒÔÊÇÏÂÃæÎªpulsar namespaceÖеÄdefault servcieaccount Ìí¼ÓÉÏimagePullSecretkubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regsecret"}]}' -n pulsar2.2 ʹÓÃhelm install×°ÖÃpulsar¶¨ÖÆÍêvalue.yamlÖ®ºóʹÓÃÏÂÃæµÄÏÂÁîÏòK8S¼¯Èº°²ÅÅpulsarhelm install \ --values values.yaml \ --set initialize=true \ --namespace pulsar \ pulsar pulsar-2.7.7.tgz×°ÖÃÍê³ÉºóʹÓÃÏÂÃæµÄÏÂÁîÉó²éÒ»ÏÂÁ½¸ö³õʼ»¯job pulsar-pulsar-initºÍpulsar-bookie-initµÄpod״̬ΪComplete:kubectl get pod -n pulsar | grep initpulsar-bookie-init--1-h65bp 0/1 Completed 0 5m14spulsar-pulsar-init--1-t4thq 0/1 Completed 0 5m5sʹÓÃÏÂÃæµÄÏÂÁîÉó²éÒ»ÏÂpulsar¼¯Èº¸÷¸ö×é¼þµÄPod״̬ËùÓж¼ÎªRunning:kubectl get pod -n pulsar -l cluster=pulsar -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESpulsar-bookie-0 1/1 Running 0 14m 10.244.226.91 node1 pulsar-bookie-1 1/1 Running 0 14m 10.244.63.90 node2 pulsar-bookie-2 1/1 Running 0 14m 10.244.46.92 node3 pulsar-broker-0 1/1 Running 0 14m 10.244.226.90 node1 pulsar-broker-1 1/1 Running 0 14m 10.244.63.89 node2 pulsar-broker-2 1/1 Running 0 14m 10.244.46.90 node3 pulsar-proxy-0 1/1 Running 0 14m 10.244.226.93 node1 pulsar-proxy-1 1/1 Running 0 14m 10.244.63.91 node2 pulsar-proxy-2 1/1 Running 0 14m 10.244.46.93 node3 pulsar-pulsar-manager-7b98666cff-5626f 1/1 Running 0 14m 10.244.63.88 node2 pulsar-recovery-0 1/1 Running 0 14m 10.244.46.89 node3 pulsar-toolset-0 1/1 Running 0 14m 10.244.46.91 node3 pulsar-zookeeper-0 1/1 Running 0 14m 10.244.226.92 node1 pulsar-zookeeper-1 1/1 Running 0 14m 10.244.63.92 node2 pulsar-zookeeper-2 1/1 Running 0 13m 10.244.46.94 node3 ÈôÊǺó±ßµ÷½âÁËvalues.yamlÐèÒª¸üа²ÅÅʱʹÓÃÏÂÃæµÄÏÂÁî:helm upgrade pulsar pulsar-2.7.7.tgz \ --namespace pulsar \ -f values.yaml2.3 ÔÚtoolset podÖвâÊÔ½¨Éètenant, namespaceºÍtopictoolset podÖаüÀ¨ÁËÖÖÖÖ¹ÜÀíºÍ²âÊÔpulsarµÄÏÂÁîÐй¤¾ßÀýÈçpulsar-admin, pulsar-clientµÈÏÂÃæ½øÈëtoolset podÖÐʹÓÃpulsar-adminÏÂÁîÐй¤¾ß²âÊÔÒ»ÏÂtenant, namespaceºÍtopicµÄ½¨Éè½øÒ»²½È·ÈÏpulsar¼¯ÈºÊÂÇéÕý³£kubectl exec -it -n pulsar pulsar-toolset-0 -- /bin/bashbin/pulsar-admin tenants create test-tenantbin/pulsar-admin tenants list"public""pulsar""test-tenant"bin/pulsar-admin namespaces create test-tenant/test-nsbin/pulsar-admin namespaces list test-tenant"test-tenant/test-ns"bin/pulsar-admin topics create-partitioned-topic test-tenant/test-ns/test-topic -p 3bin/pulsar-admin topics list-partitioned-topics test-tenant/test-ns"persistent://test-tenant/test-ns/test-topic"2.4 ½¨Éèpulsar-managerµÄ¹ÜÀíÔ±Óû§²¢µÇ¼Éó²éÏÂÃæ²âÊÔÒ»ÏÂpulsar managerÊÇ·ñ¿ÉÒÔʹÓÃÇ°ÃæÊ¹ÓÃhelm chart°²ÅŵÄpulsar¼¯ÈºÔÚk8sÖн¨ÉèÁËÏÂÃæ7¸öServicekubectl get svc -l app=pulsar -n pulsarNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEpulsar-bookie ClusterIP None 3181/TCP,8000/TCP 40mpulsar-broker ClusterIP None 8080/TCP,6650/TCP 40mpulsar-proxy LoadBalancer 10.104.105.137 80:31970/TCP,6650:32631/TCP 40mpulsar-pulsar-manager LoadBalancer 10.110.207.9 9527:32764/TCP 40mpulsar-recovery ClusterIP None 8000/TCP 40mpulsar-toolset ClusterIP None 40mpulsar-zookeeper ClusterIP None 8000/TCP,2888/TCP,3888/TCP,2181/TCP 40m´ÓÉÏÃæÏÂÁîµÄÊä³ö¿ÉÒÔ¿´³öbookie, broker, recovery, toolset, zookeeperÕâ5¸öServiceµÄÀàÐͶ¼ÊÇClusterIPµÄ²¢ÇÒcluser-ipΪNone¶¼ÊÇHeadlessµÄServiceÓÉÓÚËüÃÇÖ»ÐèÒªÔÚk8s¼¯ÈºÄÚ²¿Ê¹ÓÃpulsar-proxyºÍpulsar-pulsar-managerΪLoadBalancerÀàÐͲ¢ÇÒ¶¼ÉèÖÃÁËNodePortÌṩÁË´ÓK8S¼¯ÈºÍⲿ»á¼ûµÄÄÜÁ¦´Ó¼¯ÈºÍⲿ»á¼ûpulsar-managerµÄµØÖ·ÊÇhttp://node1:32764µÚÒ»´Î»á¼ûpulsar manager֮ǰÐèҪΪÆä½¨ÉèÒ»¸ö¹ÜÀíÓû§:CSRF_TOKEN=$(curl http://node1:32764/pulsar-manager/csrf-token)curl \ -H 'X-XSRF-TOKEN: $CSRF_TOKEN' \ -H 'Cookie: XSRF-TOKEN=$CSRF_TOKEN;' \ -H "Content-Type: application/json" \ -X PUT http://node1:32764/pulsar-manager/users/superuser \ -d '{"name": "admin", "password": "pulsar", "description": "test", "email": "username@test.org"}'ÉÏÃæµÄÏÂÁîΪpulsar-manager½¨ÉèÓû§ÃûΪadmin, ÃÜÂëΪpulsarµÄ¹ÜÀíÓû§ʹÓøÃÓû§¾Í¿ÉÒԵǼpulsar manager±¸×¢, ÔÚÏßÉÏʹÓÃʱÖ»¹Ü×èÖ¹ÒÔNodePort̻¶·þÎñÕâÀïµÄpulsar-managerµÄService¿ÉÒÔÐÞ¸ÄΪCluserIPÀàÐͲ¢¹Ø±ÕNodePortͬʱ½¨ÉèIngressÒÔIngress+ÓòÃûµÄÐÎʽ̻¶³öÀ´ ¿´ÁËÒ»ÏÂpulsar-helm-chartÒ²ÊÇÖ§³ÖµÄÖ»ÊÇÏÖÔÚpulsar-helm-chart 2.7.7Öн¨ÉèIngressʱʹÓõÄÊÇapiVersion: extensions/v1beta1 APIÕâ¸öAPI´Ók8s 1.19±»±ê¼ÇΪ·ÅÆúÔÚk8s 1.22Òѱ»ÒƳý ÒÔÊÇÒªÖ±½ÓÊÇʹÓÃpulsar-helm-chart½¨ÉèIngressµÄ»°ÐèÒªÆÚ´ýpulsar-helm-chartµÄ¸üвο¼https://github.com/apache/pulsar-helm-charthttps://pulsar.apache.org/docs/zh-CN/kubernetes-helm/https://github.com/apache/pulsar-helm-chart/issues/133https://github.com/rancher/local-path-provisionerhttps://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-service-account/

¶ÔÁ˾ÅÏöÌ칬Äã´³µÄÔõôÑùѪħµ¶Ê¥Ëæ¼´ÓÐЩÆÚ´ýµØÎʵÀ¶¡·î¿´×ÅǮûÉÙ»¨Ò»µãÏ£ÍûûÓгîµÄ¶¼Ë¯²»×žõÔõô°ì²Å»ª°Ñ»ÄɽÄð³É²èɽĨËûÔÚ´²ÉÏ·­À´¸²È¥Ïë³öÁËÒ»Ìõ¶¾¼Æ

ËüÈ«Éí¶¼ÓÉʯ¿é×é³É³äÂú×ÅŨÓôµÄÍÁµÀµÀºÛÁúÉíºñÖØÁúÑÀÍðÈôʯÁÖ¹Å×¾´óÆøÍþÛÂÕ𺳹úÇì½Ú¼ÃÄÏ14¸ö»éÒö¹ÒºÅ´¦Ϊ°®¼Ó°àÖµ°à±íÐû²¼

µ¼ÑÝ£º
¸üУº

2025-09-24 19:15:54

±¸×¢£º
¹úÓï
ÆÀ¼Û£º
¹Ë×ÜËûÌìÌì°ÑÎÒ°´ÔÚǽÉÏÇ×ÊÖ»úÔĶÁ_ÏÖ´úÑÔÇé - µÃ¼ä...

Ñ¡¼¯²¥·Å
ÅÅÐò

Ñ¡Ôñ²¥·ÅÔ´
¿ìËÙ²¥·Å¢Ù
Ê×Ò³
Ó°Ï·
Ò»Á¬¾ç
×ÛÒÕ
¶¯Âþ
APP
ÍøÕ¾µØÍ¼