skywalking 实现收集kubernetes环境dubbo微服务链路跟踪案例
一、准备zookeeper注册中心相关镜像文件
1.1、准备相关文件及脚本
[root@easzlab-images-02 zookeeper]# pwd /root/20221002/myserver/zookeeper [root@easzlab-images-02 zookeeper]# ll -h total 37M drwxr-xr-x 4 root root 4.0K Oct 3 22:25 ./ drwxr-xr-x 5 root root 4.0K Oct 3 22:22 ../ drwxr-xr-x 2 root root 4.0K Oct 3 18:57 bin/ -rwxr-xr-x 1 root root 144 Oct 3 22:00 build-command.sh* drwxr-xr-x 2 root root 4.0K Oct 3 18:58 conf/ -rw-r--r-- 1 root root 1.7K Oct 3 22:17 Dockerfile -rwxr-xr-x 1 root root 278 Oct 3 18:58 entrypoint.sh* -rw-r--r-- 1 root root 63K Oct 3 18:58 KEYS -rw-r--r-- 1 root root 91 Oct 3 18:58 repositories -rw-r--r-- 1 root root 2.3K Oct 3 18:58 zookeeper-3.12-Dockerfile.tar.gz -rw-r--r-- 1 root root 36M Oct 3 18:59 zookeeper-3.4.14.tar.gz -rw-r--r-- 1 root root 836 Oct 3 18:58 zookeeper-3.4.14.tar.gz.asc [root@easzlab-images-02 zookeeper]# ls bin/ zkReady.sh [root@easzlab-images-02 zookeeper]# ls conf/ log4j.properties zoo.cfg [root@easzlab-images-02 zookeeper]#
1.2、配置一下脚本相关信息
[root@easzlab-images-02 zookeeper]# cat bin/zkReady.sh #!/bin/bash /zookeeper/bin/zkServer.sh status | egrep 'Mode: (standalone|leading|following|observing)'
[root@easzlab-images-02 zookeeper]# [root@easzlab-images-02 zookeeper]# cat conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zookeeper/data dataLogDir=/zookeeper/wal #snapCount=100000 autopurge.purgeInterval=1 clientPort=2181 quorumListenOnAllIPs=true
[root@easzlab-images-02 zookeeper]# [root@easzlab-images-02 zookeeper]# cat conf/log4j.properties # Define some default values that can be overridden by system properties zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE zookeeper.console.threshold=INFO zookeeper.log.dir=/zookeeper/log zookeeper.log.file=zookeeper.log zookeeper.log.threshold=INFO zookeeper.tracelog.dir=/zookeeper/log zookeeper.tracelog.file=zookeeper_trace.log # # ZooKeeper Logging Configuration # # Format is "<default threshold> (, <appender>)+ # DEFAULT: console appender only log4j.rootLogger=${zookeeper.root.logger} # Example with rolling log file #log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE # Example with rolling log file and tracing #log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE # # Log INFO level and above messages to the console # log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold} log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n # # Add ROLLINGFILE to rootLogger to get log file output # Log DEBUG level and above messages to a log file log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold} log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file} # Max log file size of 10MB log4j.appender.ROLLINGFILE.MaxFileSize=10MB # uncomment the next line to limit number of backup files log4j.appender.ROLLINGFILE.MaxBackupIndex=5 log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n # # Add TRACEFILE to rootLogger to get log file output # Log DEBUG level and above messages to a log file log4j.appender.TRACEFILE=org.apache.log4j.FileAppender log4j.appender.TRACEFILE.Threshold=TRACE log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file} log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout ### Notice we are including log4j's NDC here (%x) log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n [root@easzlab-images-02 zookeeper]# [root@easzlab-images-02 zookeeper]# cat repositories http://mirrors.aliyun.com/alpine/v3.6/main http://mirrors.aliyun.com/alpine/v3.6/community [root@easzlab-images-02 zookeeper]#
1.3、准备KEYS文件
cat KEYS
This file contains the PGP keys of various ZooKeeper developers. Users: pgp < KEYS or gpg --import KEYS Developers: pgp -kxa <your name> and append it to this file. or (pgpk -ll <your name> && pgpk -xa <your name>) >> this file. or (gpg --list-sigs <your name> && gpg --armor --export <your name>) >> this file. pub 1024D/68E327C1 2008-10-22 Key fingerprint = D0BC 8D8A 4E90 A40A FDFC 43B3 E22A 746A 68E3 27C1 uid Patrick Hunt (ZooKeeper release signing key) <phunt@apache.org> sub 2048g/279C600D 2008-10-22 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.6 (GNU/Linux) mQGiBEj+sa8RBACfP1oQOrzoIH+vaGFOR0hUNQ1tVFn8u8p0MJLtAzx3C3fXuLAQ lTAviPR5LpsVfnZtil/ysp8o5wlHPUrMDHwcrtDonxe404FaTclHfKcRhGE8T4wL 9BvplKe04kT5E6vzyfuU9+Vza6SdVU8ZPd79CK/UNr2JpQ7x/NdXKupptwCg3B/Y Sxzze9vjlV1Xq9wNx2+Dc6MD/2Sm7u41EfTfq6v7NdXg9DY6+NBN95D+VBCjXr+T 8ZnUTvXJN2KeLYFf5ozdtjfj0u+rlj57/bEpcEqBAoIy37cFakmI3aiNjP3RXqLx LrAgZVwUAHAN5kIPrVd4ZQ8OZyshH5WtSViWs/NQj4CerXQe3XmGEqU//iaAeFgv 8ZgMA/0YlDS95tzEfhS/3LYhKUgsi+pxLhFv/h1oTF4HRIL4syzhJGe2Hwwy4/rT p1BdlOhatc4AjTDjjSx8R1sQaCu3jeWfz75CqbIJPcnu1dh1UDa+2EK/ykfQoNzN bmc+fttw/0McWhl0eBsI/0vg9yMkVIlUQwgn0qeruKcQBbqeqbQ/UGF0cmljayBI dW50IChab29LZWVwZXIgcmVsZWFzZSBzaWduaW5nIGtleSkgPHBodW50QGFwYWNo ZS5vcmc+iGAEExECACAFAkj+sa8CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK CRDiKnRqaOMnwWYCAJ46DnpkBAYwgJW56dgnQc7VAOwmJgCgxb+Zo0kznrRKh+xw 8fr+ZdqI/OW5Ag0ESP6xuhAIAKcqHEC9Orkl7qNBbSlECLZ8cuaSv7zZvIeE0DaD XwfspY0vNrE7RDBOcWPVttWZzYLssMquxodAXhFJQ7k4ETIM1D0cp9J7lFr+rAxq 1ybhPNukJPOIKcmXGS9wr/oWbsonF8CsY2DX3hCSQqeL1qsLgNP/FA+1Bawhpz7P HpZqgu3qBNUNbShFTadXw/L7ru19/BlPaI4p0UFhbbf01XKd4kR5sdAxHWCkOvY1 U4JAwty84xLQ1fU4Xc65u6Y/EpNq4dosJjfPEzxAFVZLhBNdarX0b8u/tJI138tn pGCSBvWNsdJX8zClmK1KDLf1ksWYbMagStuBbOzG4wBmjPcABAsH/1u4u32PgQ39 3aqh5WT6lxjO3Dggc0BrtaSmxsoKPrisgiVIRS/C7XEK98T7832y8LUX0xAoRT6q Jyg+rvDc6PFt8Jde2j+q2UCCq68xO+Qad576BpKK448YHPo5PjjisgpXbp1AB4G7 UrA4aW1fA+kqVOL1EebnWBmG37zgCntYnOwJJT/MT+shC4mM1u9lXfyV8JPqnYWY R7Hjq90bavKBUO0vA5s/791SceT1rBqgtNOSPA41A3Q38iBnGeo2Dh2kQdAZ8a5g fsEYQ/ZPhlxRkxhjfTCvWUbkh0b1fO5ZOZbeag+fR/GBI4SQmClRpD/66VhAzERL y9NfusDU8p+ISQQYEQIACQUCSP6xugIbDAAKCRDiKnRqaOMnwRPAAJkBcxNG0qZt ahF/8VAEXFBkiASz8QCeImay/25M8xvX/VmqMj1Vq88cUUU= =HKV3 -----END PGP PUBLIC KEY BLOCK----- pub 4096R/6E1CC7A4 2011-02-18 Key fingerprint = 4E27 888E 5533 32EE AE6B 56FB 7C94 7626 6E1C C7A4 uid Benjamin Reed (CODE SIGNING KEY) <breed@apache.org> sig 3 6E1CC7A4 2011-02-18 Benjamin Reed (CODE SIGNING KEY) <breed@apache.org> sub 4096R/B9E5AE9D 2011-02-18 sig 6E1CC7A4 2011-02-18 Benjamin Reed (CODE SIGNING KEY) <breed@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.14 (GNU/Linux) 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 GNW5Gn4c4eIbDJKr2cuUwBlC =HUbN -----END PGP PUBLIC KEY BLOCK----- pub 4096R/8EE2F25C 2011-10-24 Key fingerprint = B6B3 F7ED A5BA 7D1E 827D E518 0DFF 492D 8EE2 F25C uid Mahadev Konar (CODE SIGNING KEY) <mahadev@apache.org> sub 4096R/1F35DF4C 2011-10-24 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.16 (Darwin) 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 7kmI6Gh95bLf1om+Bc8ajpm9Zsw= =fnga -----END PGP PUBLIC KEY BLOCK----- pub 4096R/D2C80E32 2014-02-19 Key fingerprint = 1D3D 275F 61D8 E2B5 89C1 9FD0 93FB 0254 D2C8 0E32 uid Flavio Junqueira (CODE SIGNING KEY) <fpj@apache.org> sig 3 D2C80E32 2014-02-19 Flavio Junqueira (CODE SIGNING KEY) <fpj@apache.org> sub 4096R/67413EBA 2014-02-19 sig D2C80E32 2014-02-19 Flavio Junqueira (CODE SIGNING KEY) <fpj@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.11 (GNU/Linux) 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 4/waU7vahotkc5P5ih1Z0E+U4Q== =Gtjp -----END PGP PUBLIC KEY BLOCK----- pub 4096R/820F225C 2015-03-29 uid Michi Mutsuzaki (CODE SIGNING KEY) <michim@apache.org> sig 3 820F225C 2015-03-29 Michi Mutsuzaki (CODE SIGNING KEY) <michim@apache.org> sub 4096R/E48B956B 2015-03-29 sig 820F225C 2015-03-29 Michi Mutsuzaki (CODE SIGNING KEY) <michim@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 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 g/e9PnnVnqzyOQzwJb+zU1ocX0kXaQ== =O7M5 -----END PGP PUBLIC KEY BLOCK----- pub 4096R/92BC2F2B 2015-11-08 uid Raul Gutierrez Segales <rgs@apache.org> sig 3 92BC2F2B 2015-11-08 Raul Gutierrez Segales <rgs@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 mQINBFY+qckBEAC4Z9lHvKZRLXxAlirLoyOtGTCoIWNanul79svu0hCU+NBd9Pay jEZo6/DyVsHnXbnLZoViktc6SljoITvYSSNtFClEHbUtcuqbKV2ULJNb2ypxu74s l/N1x1Xawlnxk3NimT4r2HLO3hgp7Ja2A7OmVVwCNNxUzZQo1U9g5J6kF5sE5Lj7 LSkPGxZ3mgq5J2KiQ/rbgoUpd5e2LiZ9v3ssnyppRzdh2h2rlQgcv9wUIgGxb9nH uvGMI1z/jV8btoK6il8EHZ9jHYLAVf8rizXi4dGgzV2BOSx898nV4UqO+/ObGBIr Nrch84trDhGb5fW16qwm5Re1xcvQ7ogWC+zgzY1T3zEhQrp/1kYWCUfz8nq/QHyD WBDs+96eh9GmQTKgvagkUds00Pkd+z7cIlnfkwHUbcjycl9sa5xqcsf152E7/cs2 XGhwPGavem2/tqjCjSF/KLhlxSw153mPchyQ2jgFRueewVXx/mm1niH1mqCmqLCZ O+vMTnTkJ+JyXS75Uig2ndJyV13OoSxSfBIcmlfeKFY94j0m969AbvCbgnFwQOzp IJ2RP378h79exItWgtdShyi/ygvouWUZS8i5IU53sbVNCZtNGJLpAhUuA77WOxaF Q499jwQJmTG6E3SJ4/FcuanbNs9GQg7HwNK7jleRmy/NzZRM5HopV0w6DwARAQAB tCdSYXVsIEd1dGllcnJleiBTZWdhbGVzIDxyZ3NAYXBhY2hlLm9yZz6JAjcEEwEI ACEFAlY+qckCGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQvjtrk5K8Lys6 hQ//XfmOILzNf65zCHkIbTjYD+Wm5cAhfgiGfNa+XAwsr7LDNH1qzsJ1TkFCur+W c2xUpqugwk4Ebeo91MnMvekzCoZvu1rfCRlznZGre8CqW7bPRm/6fBBQXcBbyUDp ohDid4f/Jk3POWiMASL0D512Ma1QWeC3MJ664bIyub1oYJglALxzPdetH5R+9tRP uQeE+x7YAB6HhlSpV+aByTTRXLSoOcuGRcUFzk091ACeta9Ifk5Z7xxTGmzO5A02 D4XRg2Hyog3bof7FDWrcOHx3saOCEcV9iws8/DIesaWbBd+639/s0MkT1o+PmUOh SsIUAAhaAV04M+btDozakP9E1JI0lmT8fCbCSLcheQThs+WBu6hoImDWWM7bZ6SP EUP+JmvvpAIXCCnTIeyvEwIRa1R9MrgLTYdXgK1A3UWtMyG1g1x+1GJ21FstDEdV 6ihPZRrxpxJDdoTWZUge+UPr7JJlGcfETOg1FTs2h7VpDe6WF5oaXTGDK/AJnWsq pPhVMfayck4818S7QqNrivtenJmuktHjECIcTYyU9O4yQI1l5NHrz2o4ScFIUY/Y DD7iT0sGrCr8ES481D1RznGmPTwaY5zjwc59y/Ze3u9vA/JGlEcp7IT7fA6t3WI2 EjutcaM7Qq8SRpGSHCBnAdQR1qQj7On4//i+Ue6mh0T4Jsw= =nmmb -----END PGP PUBLIC KEY BLOCK----- pub 4096R/ADAFD097 2016-06-23 uid Chris Nauroth (CODE SIGNING KEY) <cnauroth@apache.org> sig 3 ADAFD097 2016-06-23 Chris Nauroth (CODE SIGNING KEY) <cnauroth@apache.org> sub 4096R/7414090D 2016-06-23 sig ADAFD097 2016-06-23 Chris Nauroth (CODE SIGNING KEY) <cnauroth@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.13 (Darwin) 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 04LpkJejX3qx33i2al7yXFjxI+3K =vC5F -----END PGP PUBLIC KEY BLOCK----- pub 4096R/B5E9BD2D 2016-08-15 uid [ultimate] Rakesh Radhakrishnan (CODE SIGNING KEY) <rakeshr@apache.org> sig 3 B5E9BD2D 2016-08-15 Rakesh Radhakrishnan (CODE SIGNING KEY) <rakeshr@apache.org> sub 4096R/51673139 2016-08-15 sig B5E9BD2D 2016-08-15 Rakesh Radhakrishnan (CODE SIGNING KEY) <rakeshr@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2 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 mhqK+kCnQV8bmEPzTTu1BtXvCwPniUimK3c= =mE84 -----END PGP PUBLIC KEY BLOCK-----pub 4096R/767E7473 2017-03-27 uid [ultimate] Michael Han (CODE SIGNING KEY) <hanm@apache.org> sig 3 767E7473 2017-03-27 Michael Han (CODE SIGNING KEY) <hanm@apache.org> sub 4096R/EA264198 2017-03-27 sig 767E7473 2017-03-27 Michael Han (CODE SIGNING KEY) <hanm@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2 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 fVATiSkfrGF+NfEeB3MVOw== =tV3z -----END PGP PUBLIC KEY BLOCK----- pub rsa4096 2014-09-23 [SCA] [expires: 2024-09-20] 586EFEF859AF2DB190D84080BDB2011E173C31A2 uid [ultimate] Abraham Fine <abe@abrahamfine.com> sig 3 BDB2011E173C31A2 2016-07-08 Abraham Fine <abe@abrahamfine.com> sig 3 BDB2011E173C31A2 2014-09-23 Abraham Fine <abe@abrahamfine.com> sig 6D873605687684F6 2016-07-05 [User ID not found] uid [ultimate] keybase.io/abefine <abefine@keybase.io> sig 3 BDB2011E173C31A2 2014-09-23 Abraham Fine <abe@abrahamfine.com> sig 6D873605687684F6 2016-07-05 [User ID not found] uid [ultimate] Abraham Fine <afine@apache.org> sig 3 BDB2011E173C31A2 2016-07-05 Abraham Fine <abe@abrahamfine.com> sig 3 BDB2011E173C31A2 2016-07-08 Abraham Fine <abe@abrahamfine.com> sig 6D873605687684F6 2016-07-05 [User ID not found] uid [ultimate] Abraham Fine <a@abrahamfine.com> sig 3 BDB2011E173C31A2 2014-09-23 Abraham Fine <abe@abrahamfine.com> sig 6D873605687684F6 2016-07-05 [User ID not found] sub rsa4096 2016-07-05 [S] sig BDB2011E173C31A2 2016-07-05 Abraham Fine <abe@abrahamfine.com> sub rsa4096 2014-09-23 [E] [expires: 2024-09-20] sig BDB2011E173C31A2 2014-09-23 Abraham Fine <abe@abrahamfine.com> -----BEGIN PGP PUBLIC KEY BLOCK----- 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 =HURJ -----END PGP PUBLIC KEY BLOCK----- pub rsa4096 2018-06-19 [SC] 3F7A1D16FA4217B1DC75E1C9FFE35B7F15DFA1BA uid [ultimate] Andor Molnar <andor@apache.org> sig 3 FFE35B7F15DFA1BA 2019-02-06 Andor Molnar <andor@apache.org> sub rsa4096 2018-06-19 [E] sig FFE35B7F15DFA1BA 2018-06-19 Andor Molnar <andor@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- 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 =Vkmg -----END PGP PUBLIC KEY BLOCK----- pub rsa2048 2017-04-12 [SC] BBE7232D7991050B54C8EA0ADC08637CA615D22C uid [ultimate] Enrico Olivelli <eolivelli@apache.org> sig 3 DC08637CA615D22C 2017-04-12 Enrico Olivelli <eolivelli@apache.org> sub rsa2048 2017-04-12 [E] sig DC08637CA615D22C 2017-04-12 Enrico Olivelli <eolivelli@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFjuhrUBCAC1Gd/2cx6oWIrelUteT7MP4e0reJUsv9H8aROVh2H0P0000bvd g3S5tb7thE+MNw8koYQKBegW7PPpiBDubGGhX5EHo9gDKcK+3HVDM5JdfF98yYsZ ZL6XiV3DuEsfN74TJFqnb1+mqZpUNAHx5vFc89ba0PeBPUgPmm8xl92zy73OEDl3 IfBe7jEJjPWhcyaoVSxYtucnyxd5jDtWqWBcqLuAfcmO4QywhNp48fXDOQM5W43V GWZCNuF7EXVGA47rSdRf+zvc++2NaHT/AZEuVvji2EZZoxehkXRqgoyQGyySjkjn F8Xy04/47u6E14ed1qwQI+BgoZbRSAeCmJ6RABEBAAG0JkVucmljbyBPbGl2ZWxs aSA8ZW9saXZlbGxpQGFwYWNoZS5vcmc+iQE4BBMBAgAiBQJY7oa1AhsDBgsJCAcD AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDcCGN8phXSLAlAB/9jWGYjdNpzT/dU/yGY LxoMh3zrbP0cj+h9juLV5RKEjVX8tr4aQoRLXx4HnC6tVStBvL66Z+KEMp3Rja61 b35tHOmb1ZnLYIgMUQ//foa9lRFQ1xv5snZfNRGt1yw/RP8qJJJF903w1Gn5RF7J fnubCZkCc3FYLplUITGe4z+ypCev4cyAQAPSUenPt6yoyEGnaLgIhpilLZfhMcJg tQQWK7m8DGqEvm9aACBBXxueqFRhgkHvvYwt/l06Uu7/n2DugTfcm3f5SwVbEI2E Pt+IRbpWGwrG9TFg+GSyDekB6IZxVbi4jLqGU86UJAo5kubH4kIRzS4CWtJfydTV jSImuQENBFjuhrUBCADYkyMyG9dY+vDXTX5DI7gORaZf/9vaJjclgBU5szbKTT5T NJUMLdRGiJ5TflJMA4+iuvE7uf8Sr33uhUXCri2xnrkdAFqOHZEYueDMNC6Rya2g Gr9w/AroBUUcDi5bwrYELZKXkq4qAMse65PkOOF2w6HrDvMObAtAZyaP3ZqkBeAc ZewYK+QMmsYGeOk1Fgm8CLZOnDbrzh78EV+2auyosyIqmKvNAkgoyprFjFr7AeAg JLxVCrjKXvoEfINbt8X41uXQ/aOgQqFAqquATcTKtb9fgk+pRxFqawTwTGc/ZuZ1 dSl2rxeKiMMOszfcKXFTCJuEUsZjPZviTnKvYfCxABEBAAGJAR8EGAECAAkFAlju hrUCGwwACgkQ3AhjfKYV0izz+ggAqNdRR3AKXBtMoQoCpegGl7574M3f67hGdayt mRA8LrSVgYJO6iOJV4+i7vxgzFiTP+dJj8RJLNVD0MCanYXqakes/GzKp3O9NrX+ iNHOuqfKr0qRYT/fNrOFZ5OyC4yK5IDdXcg5uwU87iMOFfqcml8Vmkox/QHurkqs Ri7JrVSg/6vK3wvKyTu3TdzuTfs5QvOLA09QGvX9qnAjl00cLSruoDcp5i0RxRqc NT3h4L51AkiRU0PiGA//Qc8g+jJBREuDpG9N0NbDcjLaGY3IvpMm5NKBWtrDIsN9 5vfBZyNC2sA+rnEINTioed/cwspHmMgX0n3Jq1x4GSUMZS7q1g== =Q0lt -----END PGP PUBLIC KEY BLOCK----- pub rsa3072 2020-01-30 [SC] [expires: 2022-01-29] 3D296268A36FACA1B7EAF110792D43153B5B5147 uid [ultimate] Norbert Kalmar <nkalmar@apache.org> sig 3 792D43153B5B5147 2020-01-30 Norbert Kalmar <nkalmar@apache.org> sub rsa3072 2020-01-30 [E] [expires: 2022-01-29] sig 792D43153B5B5147 2020-01-30 Norbert Kalmar <nkalmar@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- mQGNBF4yhwMBDADiI0DpXFNH5L8yBn4g5oj8dchfyYHYF2+EPnWEC4UeEOhuc7Y+ LLTF4ZI4ymn/UzJHbJs+fV1HIV/V6MZezjEAK+ZAJxsWhC6s6N2dahIOVIgQEu66 SryEcZL41CTHgV+ifmNrfJ1MKORq+4ng6VYI3VRSCANRWtNVaS1GyAWUqJX0od/w XqeVi3L5z0QgddvzMJi9qecTHfLCC2C0jXvp3NiCfDjLrEuibLSPgYkRmPD2Q0Rn khHef8lp6AqH+X4MnONi3Kxbv0N4ZoPZAPWDTsCnUDbffk+d9bWUI92XFWJf262e jB/10vcTv1jpikVWl4KuEQNqwHh2BVsoFz2X9TR/Kum7U+tQz0teO0bVLHJDq+mh 296Hhb/eHoseYigKDGEtEWuGpUiZqY758FT+6vFP7QSFWrNJH2oEDk+UJlKJD3iu oWaNbSa556ulGWriRlNdGiBMNdF7YPnAHko9UOhnCDJ2Ueq57Sh3sATbVKwKTfF4 oUR7UkbklV9tA4kAEQEAAbQjTm9yYmVydCBLYWxtYXIgPG5rYWxtYXJAYXBhY2hl Lm9yZz6JAdQEEwEKAD4WIQQ9KWJoo2+sobfq8RB5LUMVO1tRRwUCXjKHAwIbAwUJ A8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRB5LUMVO1tRR1ZWDADGtUik eGPBebX2sjSzDI0J9dSkFdzPtqzfnSiliPHrb2dRz6XGoi/mz5IMvcTe9bti0Eym TA+2x1p8o9o3lEFi89CJSBaPCvbkzjCfWIn24HWlYBzPBDqq2+vyh/aiENF89Xgy T9V9WZiet40QIGYDPx4m+vINypah5dPWvSqUNcBxEsYQoHmJGOGnKGWT0mJOWX7o oYPjFtr3E88XMRyk5+sTg/onur/9TAhYx0pasdQSslWt2NrkH4/dRoNVWJMHHbSU ctxTQ8MiadUgop6ppud1hoaqovO6X7Np5iCHZv/Dgxhr9a3ZHJ/99V3+AbsYpok4 Xgwe2LmVqL8AzKBJQyCYOLP4EKrc8tOV25LUhxEOloUesVOcNhl2dGB0wwSmEmZc 8PE5eiMDRPqx4UJqJyL4qE/lOykwzJRv1Xzqf30lTn+pmsmR7zegX7zl499pQlQU Lx2S26kE3wkTZE97SMsWv+0BmkS+pmITAB/58lT7Mf5T80z5WT9HMAbjVLG5AY0E XjKHAwEMAOoNECVKpYqwBRPFyzTzAjqKLQHVVQdC1H1EM1FLJC6gE9dypREEJChh Mo9GshjuwgCXIhHsTWaEqeLkg0YsQPXd1p2luFMNDzGClX8KKQsh4CRY4l2T1TMO +YODZLzNsXj3psKZbgzy41MPoJHKz9woyc8C2Syy26qCPdEl/Spb1aIdwzvnseI/ K8+q6DhGOAAnSsHUEXXltsjFbHtBUX3ejqo9OsfIrADht9fTUNOvrMOXO7+469Y+ kjWqAn21pJc7ZzotQAo717ewIa52+Cj88CHNwuMGH6jPWGE/V7kkee0GgFNxv5/c ABx/84MXkmj0tz4i3Bh0AtwxbFE2H3OYtDjKwQamQ1p4o+3svxjgX7vaGK209yGI UVj09hpOtz/E2xFeMwgX1JyX7bS9Kzkhgfhn9HHzihAvzSZCqQxsF3VcEKr0KeSO bjQ3pPb5B50v91c/qMHJILVa8lZW3RMCpkTTcOCN2vtfpJjUmqkGubz3smmgX6YL DVlNwHQSHwARAQABiQG8BBgBCgAmFiEEPSliaKNvrKG36vEQeS1DFTtbUUcFAl4y hwMCGwwFCQPCZwAACgkQeS1DFTtbUUfmSwwA33+P7PdGQm8ZZxjnuN4dG/3ZScUA 9NiKLrlUs+YIfhkd/m40YKNR+0ON+G6pwSWsVMqK/1zs0yCfCZdC3OAcMXMH06FG HTSv7oI6l2BE6yMJafAmXLkOks5KK8ge0Ahe62fs/7KKLtOXltuMgIsQ2o2v8Cyd 9WAI6hksnF7a2A1C54mvbSpOZ0gRSto3mI5V8tl+aHdGr2uh/Q7i2dpmNhoF+D35 VDAJYNLu2TjdvUzEIrpIJjS9fzbnSP1er5q/0Y1nhS9UboPhCY39e0DL89LxFGDS zT1jyi7CMdvYCY4/jEnrlR/hh1XwIwiDMC68V0YNJtf/JG/ERviu6omUI/YS7N4U 3LGbhgoVYW96jPa05ar0R1RRhmjwGoA1rX8rjP94ziHsQ7aVVrAb/kPQQS5XQyKY kYa9ccaUr0LF1H2zRpbhDvwY2Rp2TYlbN/dgjBHJ383m/PJSfBaONp939bIB0MLE aGFk8H4NrBb7HhJq4QX34QcOf2dCpupLmMsf =bZFB -----END PGP PUBLIC KEY BLOCK----- pub rsa4096 2020-04-03 [SC] 52A7EA3EECAE05B0A8306471790761798F6E35FC uid [ultimate] Mate Szalay-Beko (CODE SIGNING KEY) <symat@apache.org> sig 3 790761798F6E35FC 2020-04-03 Mate Szalay-Beko (CODE SIGNING KEY) <symat@apache.org> sub rsa4096 2020-04-03 [E] sig 790761798F6E35FC 2020-04-03 Mate Szalay-Beko (CODE SIGNING KEY) <symat@apache.org> -----BEGIN PGP PUBLIC KEY BLOCK----- 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 DCYGqPl9WXsCfZJu53q7eGV9 =Hq8V -----END PGP PUBLIC KEY BLOCK-----
1.4、编写Dockerfile
FROM elevy/slim_java:8 ENV ZK_VERSION 3.4.14 ADD repositories /etc/apk/repositories # Download Zookeeper COPY zookeeper-3.4.14.tar.gz /tmp/zk.tgz COPY zookeeper-3.4.14.tar.gz.asc /tmp/zk.tgz.asc COPY KEYS /tmp/KEYS RUN apk add --no-cache --virtual .build-deps \ ca-certificates \ gnupg \ tar \ wget && \ # # Install dependencies apk add --no-cache \ bash && \ # # # Verify the signature export GNUPGHOME="$(mktemp -d)" && \ gpg -q --batch --import /tmp/KEYS && \ gpg -q --batch --no-auto-key-retrieve --verify /tmp/zk.tgz.asc /tmp/zk.tgz && \ # # Set up directories # mkdir -p /zookeeper/data /zookeeper/wal /zookeeper/log && \ # # Install tar -x -C /zookeeper --strip-components=1 --no-same-owner -f /tmp/zk.tgz && \ # # Slim down cd /zookeeper && \ cp dist-maven/zookeeper-${ZK_VERSION}.jar . && \ rm -rf \ *.txt \ *.xml \ bin/README.txt \ bin/*.cmd \ conf/* \ contrib \ dist-maven \ docs \ lib/*.txt \ lib/cobertura \ lib/jdiff \ recipes \ src \ zookeeper-*.asc \ zookeeper-*.md5 \ zookeeper-*.sha1 && \ # # Clean up apk del .build-deps && \ rm -rf /tmp/* "$GNUPGHOME" COPY conf /zookeeper/conf/ COPY bin/zkReady.sh /zookeeper/bin/ COPY entrypoint.sh / ENV PATH=/zookeeper/bin:${PATH} \ ZOO_LOG_DIR=/zookeeper/log \ ZOO_LOG4J_PROP="INFO, CONSOLE, ROLLINGFILE" \ JMXPORT=9010 ENTRYPOINT [ "/entrypoint.sh" ] CMD [ "zkServer.sh", "start-foreground" ] EXPOSE 2181 2888 3888 9010
[root@easzlab-images-02 zookeeper]# cat entrypoint.sh
#!/bin/bash echo ${MYID:-1} > /zookeeper/data/myid if [ -n "$SERVERS" ]; then IFS=\, read -a servers <<<"$SERVERS" for i in "${!servers[@]}"; do printf "\nserver.%i=%s:2888:3888" "$((1 + $i))" "${servers[$i]}" >> /zookeeper/conf/zoo.cfg done fi cd /zookeeper exec "$@"
1.5、编写构建脚本
[root@easzlab-images-02 zookeeper]# cat build-command.sh
#!/bin/bash
TAG=$1
nerdctl build -t harbor.magedu.net/magedu/zookeeper:${TAG} .
sleep 1
nerdctl push harbor.magedu.net/magedu/zookeeper:${TAG}
1.6、构建zookeeper镜像并上传到harbor仓库
二、在k8s集群部署zookeeper集群pod
2.1、编写存储卷部署文件
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/zookeeper/pv# vim zookeeper-persistentvolume.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: zookeeper-datadir-pv-1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
server: 172.16.88.169
path: /nfs_share/k8sdata/magedu/zookeeper-datadir-1
mountOptions:
- nfsvers=3
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: zookeeper-datadir-pv-2
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
server: 172.16.88.169
path: /nfs_share/k8sdata/magedu/zookeeper-datadir-2
mountOptions:
- nfsvers=3
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: zookeeper-datadir-pv-3
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
server: 172.16.88.169
path: /nfs_share/k8sdata/magedu/zookeeper-datadir-3
mountOptions:
- nfsvers=3
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/zookeeper/pv# vim zookeeper-persistentvolumeclaim.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zookeeper-datadir-pvc-1
namespace: myserver
spec:
accessModes:
- ReadWriteOnce
volumeName: zookeeper-datadir-pv-1
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zookeeper-datadir-pvc-2
namespace: myserver
spec:
accessModes:
- ReadWriteOnce
volumeName: zookeeper-datadir-pv-2
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zookeeper-datadir-pvc-3
namespace: myserver
spec:
accessModes:
- ReadWriteOnce
volumeName: zookeeper-datadir-pv-3
resources:
requests:
storage: 10Gi
2.2、创建pv、pvc存储卷
[root@easzlab-k8s-nfs magedu]# cd /nfs_share/k8sdata/magedu/
[root@easzlab-k8s-nfs magedu]# mkdir zookeeper-datadir-{1..3}
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/zookeeper/pv# kubectl create ns myserver
namespace/myserver created
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/zookeeper/pv# kubectl apply -f .
persistentvolume/zookeeper-datadir-pv-1 created
persistentvolume/zookeeper-datadir-pv-2 created
persistentvolume/zookeeper-datadir-pv-3 created
persistentvolumeclaim/zookeeper-datadir-pvc-1 created
persistentvolumeclaim/zookeeper-datadir-pvc-2 created
persistentvolumeclaim/zookeeper-datadir-pvc-3 created
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/zookeeper/pv#
2.3、编写zookeeper集群部署文件
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/zookeeper# pwd
/root/jiege-k8s/20221002/yaml/myserver/zookeeper
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/zookeeper# vim zookeeper.yaml
apiVersion: v1 kind: Service metadata: name: zookeeper namespace: myserver spec: ports: - name: client port: 2181 selector: app: zookeeper --- apiVersion: v1 kind: Service metadata: name: zookeeper1 namespace: myserver spec: type: NodePort ports: - name: client port: 2181 nodePort: 32181 - name: followers port: 2888 - name: election port: 3888 selector: app: zookeeper server-id: "1" --- apiVersion: v1 kind: Service metadata: name: zookeeper2 namespace: myserver spec: type: NodePort ports: - name: client port: 2181 nodePort: 32182 - name: followers port: 2888 - name: election port: 3888 selector: app: zookeeper server-id: "2" --- apiVersion: v1 kind: Service metadata: name: zookeeper3 namespace: myserver spec: type: NodePort ports: - name: client port: 2181 nodePort: 32183 - name: followers port: 2888 - name: election port: 3888 selector: app: zookeeper server-id: "3" --- kind: Deployment #apiVersion: extensions/v1beta1 apiVersion: apps/v1 metadata: name: zookeeper1 namespace: myserver spec: replicas: 1 selector: matchLabels: app: zookeeper template: metadata: labels: app: zookeeper server-id: "1" spec: #imagePullSecrets: #- name: jcr-pull-secret volumes: - name: data emptyDir: {} - name: wal emptyDir: {} #emptyDir: # medium: Memory containers: - name: server image: harbor.magedu.net/magedu/zookeeper:v3.4.14 imagePullPolicy: Always env: - name: MYID value: "1" - name: SERVERS value: "zookeeper1,zookeeper2,zookeeper3" - name: JVMFLAGS value: "-Xmx2G" ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - mountPath: "/zookeeper/data" name: zookeeper-datadir-pvc-1 volumes: - name: zookeeper-datadir-pvc-1 persistentVolumeClaim: claimName: zookeeper-datadir-pvc-1 --- kind: Deployment #apiVersion: extensions/v1beta1 apiVersion: apps/v1 metadata: name: zookeeper2 namespace: myserver spec: replicas: 1 selector: matchLabels: app: zookeeper template: metadata: labels: app: zookeeper server-id: "2" spec: #imagePullSecrets: #- name: jcr-pull-secret volumes: - name: data emptyDir: {} - name: wal emptyDir: {} #emptyDir: # medium: Memory containers: - name: server image: harbor.magedu.net/magedu/zookeeper:v3.4.14 imagePullPolicy: Always env: - name: MYID value: "2" - name: SERVERS value: "zookeeper1,zookeeper2,zookeeper3" - name: JVMFLAGS value: "-Xmx2G" ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - mountPath: "/zookeeper/data" name: zookeeper-datadir-pvc-2 volumes: - name: zookeeper-datadir-pvc-2 persistentVolumeClaim: claimName: zookeeper-datadir-pvc-2 --- kind: Deployment #apiVersion: extensions/v1beta1 apiVersion: apps/v1 metadata: name: zookeeper3 namespace: myserver spec: replicas: 1 selector: matchLabels: app: zookeeper template: metadata: labels: app: zookeeper server-id: "3" spec: #imagePullSecrets: #- name: jcr-pull-secret volumes: - name: data emptyDir: {} - name: wal emptyDir: {} #emptyDir: # medium: Memory containers: - name: server image: harbor.magedu.net/magedu/zookeeper:v3.4.14 imagePullPolicy: Always env: - name: MYID value: "3" - name: SERVERS value: "zookeeper1,zookeeper2,zookeeper3" - name: JVMFLAGS value: "-Xmx2G" ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - mountPath: "/zookeeper/data" name: zookeeper-datadir-pvc-3 volumes: - name: zookeeper-datadir-pvc-3 persistentVolumeClaim: claimName: zookeeper-datadir-pvc-3
2.4、k8s集群部署zookeeper集群
三、准备dubbo微服务相关构建镜像文件
3.1、准备dubbo consumer消费端相关构建镜像文件
[root@easzlab-images-02 consumer]# pwd /root/20221002/myserver/dubbo/consumer [root@easzlab-images-02 consumer]# [root@easzlab-images-02 consumer]# ll -h total 256M drwxr-xr-x 3 root root 4.0K Oct 4 08:39 ./ drwxr-xr-x 5 root root 4.0K Oct 3 18:55 ../ -rw-r--r-- 1 root root 28M Oct 3 18:50 apache-skywalking-java-agent-8.8.0.tgz -rwxr-xr-x 1 root root 146 Oct 3 23:06 build-command.sh* -rw-r--r-- 1 root root 915 Oct 3 23:02 Dockerfile
-rw-r--r-- 1 root root 21M Oct 4 08:40 dubbo-client.jar
-rw-r--r-- 1 root root 186M Oct 3 23:00 jdk-8u212-linux-x64.tar.gz -rw-r--r-- 1 root root 2.1K Oct 3 23:00 profile -rwxr-xr-x 1 root root 442 Oct 3 18:50 run_java.sh* drwxr-xr-x 10 root root 4.0K Oct 3 18:51 skywalking-agent/ [root@easzlab-images-02 consumer]#
注意:dubbo-client.jar里面config.properties注册服务地址要填对,确认能在pod里面可以解析
其次注意:skywalking-agent目录下agent.config
[root@easzlab-images-02 consumer]# cat -n skywalking-agent/config/agent.config
18 agent.namespace=${SW_AGENT_NAMESPACE:myserver} 21 agent.service_name=${SW_AGENT_NAME:application-consumer} 93 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:172.16.88.187:11800}
[root@easzlab-images-02 consumer]# cat Dockerfile
#centos7基础镜像构建 FROM centos:7.9.2009 RUN yum install -y vim wget tree file lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop && rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #JDK Base Image ADD jdk-8u212-linux-x64.tar.gz /usr/local/src/ RUN ln -sv /usr/local/src/jdk1.8.0_212 /usr/local/jdk ADD profile /etc/profile ENV JAVA_HOME /usr/local/jdk ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/ ENV PATH $PATH:$JAVA_HOME/bin #Dubbo consumer RUN mkdir -p /apps/dubbo/consumer && useradd user1 -u 2000 ADD run_java.sh /apps/dubbo/consumer/bin/ ADD skywalking-agent/ /skywalking-agent/ ADD dubbo-client.jar /apps/dubbo/consumer/dubbo-client.jar RUN chown user1.user1 /apps /skywalking-agent -R RUN chmod a+x /apps/dubbo/consumer/bin/*.sh CMD ["/apps/dubbo/consumer/bin/run_java.sh"]
3.2、准备dubbo dubboadmin管理端相关构建镜像文件
[root@easzlab-images-02 dubboadmin]# pwd /root/20221002/myserver/dubbo/dubboadmin [root@easzlab-images-02 dubboadmin]# ll -h total 249M drwxr-xr-x 3 root root 4.0K Oct 3 23:32 ./ drwxr-xr-x 5 root root 4.0K Oct 3 18:55 ../ -rw-r--r-- 1 root root 9.3M Oct 3 23:31 apache-tomcat-8.5.43.tar.gz -rwxr-xr-x 1 root root 139 Oct 3 23:22 build-command.sh* -rwxr-xr-x 1 root root 22K Oct 3 18:51 catalina.sh* -rw-r--r-- 1 root root 1.3K Oct 3 23:32 Dockerfile drwxr-xr-x 8 root root 4.0K Oct 3 18:52 dubboadmin/ -rw-r--r-- 1 root root 27M Oct 3 18:53 dubboadmin.war
-rw-r--r-- 1 root root 186M Oct 3 23:16 jdk-8u212-linux-x64.tar.gz -rw-r--r-- 1 root root 3.4K Oct 3 18:54 logging.properties -rw-r--r-- 1 root root 2.1K Oct 3 23:16 profile -rwxr-xr-x 1 root root 99 Oct 3 18:55 run_tomcat.sh* -rw-r--r-- 1 root root 6.3K Oct 3 18:55 server.xml [root@easzlab-images-02 dubboadmin]#
注意:dubboadmin目录dubbo.properties注册中心地址
[root@easzlab-images-02 dubboadmin]# cat dubboadmin/WEB-INF/dubbo.properties
#dubbo.registry.address=zookeeper://zookeeper1:2181 dubbo.registry.address=zookeeper://zookeeper1.myserver.svc:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest
[root@easzlab-images-02 dubboadmin]# cat Dockerfile
#centos7基础镜像构建 FROM centos:7.9.2009 RUN yum install -y vim wget tree unzip file lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop && rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #JDK Base Image ADD jdk-8u212-linux-x64.tar.gz /usr/local/src/ RUN ln -sv /usr/local/src/jdk1.8.0_212 /usr/local/jdk ADD profile /etc/profile ENV JAVA_HOME /usr/local/jdk ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/ ENV PATH $PATH:$JAVA_HOME/bin #Tomcat 8.5.43基础镜像 RUN mkdir /apps /data/tomcat/webapps /data/tomcat/logs -pv ADD apache-tomcat-8.5.43.tar.gz /apps RUN useradd tomcat -u 2050 && ln -sv /apps/apache-tomcat-8.5.43 /apps/tomcat && chown -R tomcat.tomcat /apps /data -R #Dubbo dubboadmin ADD server.xml /apps/tomcat/conf/server.xml ADD logging.properties /apps/tomcat/conf/logging.properties ADD catalina.sh /apps/tomcat/bin/catalina.sh ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh ADD dubboadmin.war /data/tomcat/webapps/dubboadmin.war RUN useradd user1 && cd /data/tomcat/webapps && unzip dubboadmin.war && rm -rf dubboadmin.war && chown -R user1.user1 /data /apps EXPOSE 8080 8443 CMD ["/apps/tomcat/bin/run_tomcat.sh"]
3.3、准备dubbo provider生产者相关构建镜像文件
[root@easzlab-images-02 provider]# pwd /root/20221002/myserver/dubbo/provider [root@easzlab-images-02 provider]# ll -h total 241M drwxr-xr-x 3 root root 4.0K Oct 4 08:39 ./ drwxr-xr-x 5 root root 4.0K Oct 3 18:55 ../ -rw-r--r-- 1 root root 28M Oct 3 18:56 apache-skywalking-java-agent-8.8.0.tgz -rwxr-xr-x 1 root root 148 Oct 3 23:42 build-command.sh* -rw-r--r-- 1 root root 908 Oct 3 23:36 Dockerfile
-rw-r--r-- 1 root root 14M Oct 4 08:40 dubbo-server.jar
-rw-r--r-- 1 root root 186M Oct 3 23:16 jdk-8u212-linux-x64.tar.gz -rw-r--r-- 1 root root 2.1K Oct 3 23:16 profile -rwxr-xr-x 1 root root 396 Oct 3 18:56 run_java.sh* drwxr-xr-x 10 root root 4.0K Oct 3 18:57 skywalking-agent/ [root@easzlab-images-02 provider]#
注意:dubbo-server.jar里面config.properties dubbo注册地址填写,填写方式与dubbo-client.jar相同
其次就是skywalking目录下agent.config
[root@easzlab-images-02 provider]# cat -n skywalking-agent/config/agent.config
18 agent.namespace=${SW_AGENT_NAMESPACE:myserver}
21 agent.service_name=${SW_AGENT_NAME:application-provider} 93 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:172.16.88.187:11800}
[root@easzlab-images-02 provider]# cat Dockerfile
#centos7基础镜像构建 FROM centos:7.9.2009 RUN yum install -y vim wget tree unzip file nc lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop && rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #JDK Base Image ADD jdk-8u212-linux-x64.tar.gz /usr/local/src/ RUN ln -sv /usr/local/src/jdk1.8.0_212 /usr/local/jdk ADD profile /etc/profile ENV JAVA_HOME /usr/local/jdk ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/ ENV PATH $PATH:$JAVA_HOME/bin #Dubbo provider RUN useradd user1 -u 2000 RUN mkdir -p /apps/dubbo/provider ADD dubbo-server.jar /apps/dubbo/provider/ ADD run_java.sh /apps/dubbo/provider/bin/ ADD skywalking-agent/ /skywalking-agent/ RUN chown user1.user1 /apps /skywalking-agent -R RUN chmod a+x /apps/dubbo/provider/bin/*.sh CMD ["/apps/dubbo/provider/bin/run_java.sh"]
四、在k8s集群部署dubbo微服务
4.1、部署dubbo provider生产者
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/provider# pwd
/root/jiege-k8s/20221002/yaml/myserver/dubbo/provider
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/provider# cat provider.yaml
kind: Deployment apiVersion: apps/v1 metadata: labels: app: myserver-provider name: myserver-provider-deployment namespace: myserver spec: replicas: 1 selector: matchLabels: app: myserver-provider template: metadata: labels: app: myserver-provider spec: containers: - name: myserver-provider-container image: harbor.magedu.net/magedu/dubbo-provider:v1-20221003-zookeeper1 #imagePullPolicy: IfNotPresent imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: http --- kind: Service apiVersion: v1 metadata: labels: app: myserver-provider name: myserver-provider-spec namespace: myserver spec: type: NodePort ports: - name: http port: 8080 protocol: TCP targetPort: 8080 nodePort: 38800 selector: app: myserver-provider
通过kubectl logs查看服务启动情况
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/provider# kubectl logs -n myserver myserver-provider-deployment-6df899bfd4-tt2qs
EBUG 2022-10-04 08:46:13:181 main AgentPackagePath : The beacon class location is jar:file:/skywalking-agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class. INFO 2022-10-04 08:46:13:187 main SnifferConfigInitializer : Config file found in /skywalking-agent/config/agent.config. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.3.1.RELEASE) 2022-10-04 08:46:26.828 INFO 9 --- [ main] com.od.dubbotest.Application : Starting Application v0.0.1-SNAPSHOT on myserver-provider-deployment-6df899bfd4-tt2qs with PID 9 (/apps/dubbo/provider/dubbo-server.jar started by user1 in /home/user1) 2022-10-04 08:46:26.832 INFO 9 --- [ main] com.od.dubbotest.Application : No active profile set, falling back to default profiles: default 2022-10-04 08:46:26.879 INFO 9 --- [ main] o.s.b.f.xml.XmlBeanDefinitionReader : Loading XML bean definitions from URL [jar:file:/apps/dubbo/provider/dubbo-server.jar!/spring-config.xml] log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.common.logger.LoggerFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 2022-10-04 08:46:27.873 INFO 9 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@25a586e0: startup date [Tue Oct 04 08:46:27 CST 2022]; root of context hierarchy 2022-10-04 08:46:29.204 INFO 9 --- [ main] o.s.b.f.c.PropertyPlaceholderConfigurer : Loading properties file from class path resource [config.properties] 2022-10-04 08:46:30.737 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT 2022-10-04 08:46:30.737 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:host.name=myserver-provider-deployment-6df899bfd4-tt2qs 2022-10-04 08:46:30.737 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.version=1.8.0_212 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.vendor=Oracle Corporation 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.home=/usr/local/src/jdk1.8.0_212/jre 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.class.path=/apps/dubbo/provider/dubbo-server.jar:/skywalking-agent/skywalking-agent.jar 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.io.tmpdir=/tmp 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.compiler=<NA> 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.name=Linux 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.arch=amd64 2022-10-04 08:46:30.738 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.version=5.4.0-126-generic 2022-10-04 08:46:30.739 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.name=user1 2022-10-04 08:46:30.739 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.home=/home/user1 2022-10-04 08:46:30.739 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.dir=/home/user1 2022-10-04 08:46:30.740 INFO 9 --- [ main] org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=zookeeper1.myserver.svc:2181,zookeeper2.myserver.svc:2181,zookeeper3.myserver.svc:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@153754b3 2022-10-04 08:46:30.786 INFO 9 --- [edu.local:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server zookeeper1.myserver.svc.magedu.local/10.100.176.60:2181. Will not attempt to authenticate using SASL (unknown error) 2022-10-04 08:46:30.788 INFO 9 --- [edu.local:2181)] org.apache.zookeeper.ClientCnxn : Socket connection established to zookeeper1.myserver.svc.magedu.local/10.100.176.60:2181, initiating session 2022-10-04 08:46:30.804 INFO 9 --- [edu.local:2181)] org.apache.zookeeper.ClientCnxn : Session establishment complete on server zookeeper1.myserver.svc.magedu.local/10.100.176.60:2181, sessionid = 0x10006ab1c230001, negotiated timeout = 30000 2022-10-04 08:46:31.298 INFO 9 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2022-10-04 08:46:31.351 INFO 9 --- [ main] com.od.dubbotest.Application : Started Application in 6.571 seconds (JVM running for 18.57) Dubbo server started Dubbo 服务端已经启动
zookeeper客户端验证
4.2、部署dubbo consumer消费端
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/consumer# pwd
/root/jiege-k8s/20221002/yaml/myserver/dubbo/consumer
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/consumer# cat consumer.yaml
kind: Deployment #apiVersion: extensions/v1beta1 apiVersion: apps/v1 metadata: labels: app: myserver-consumer name: myserver-consumer-deployment namespace: myserver spec: replicas: 1 selector: matchLabels: app: myserver-consumer template: metadata: labels: app: myserver-consumer spec: imagePullSecrets: containers: - name: myserver-consumer-container image: harbor.magedu.net/magedu/dubbo-consumer:v2.5.3-20221003-zookeeper1 #imagePullPolicy: IfNotPresent imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: http
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/consumer# cat service.yaml
--- kind: Service apiVersion: v1 metadata: labels: app: myserver-consumer name: myserver-consumer-server namespace: myserver spec: #type: LoadBalancer type: NodePort ports: - name: http port: 80 protocol: TCP targetPort: 8080 nodePort: 30001 selector: app: myserver-consumer
root@easzlab-deploy:~# kubectl logs -n myserver myserver-consumer-deployment-5d4cb7db98-4fgvr
DEBUG 2022-10-04 09:09:18:681 main AgentPackagePath : The beacon class location is jar:file:/skywalking-agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class. INFO 2022-10-04 09:09:18:684 main SnifferConfigInitializer : Config file found in /skywalking-agent/config/agent.config. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.3.1.RELEASE) 2022-10-04 09:09:32.224 INFO 8 --- [ main] com.od.dubbotest.Application : Starting Application v0.0.1-SNAPSHOT on myserver-consumer-deployment-5d4cb7db98-4fgvr with PID 8 (/apps/dubbo/consumer/dubbo-client.jar started by user1 in /home/user1) 2022-10-04 09:09:32.231 INFO 8 --- [ main] com.od.dubbotest.Application : No active profile set, falling back to default profiles: default 2022-10-04 09:09:32.341 INFO 8 --- [ main] o.s.b.f.xml.XmlBeanDefinitionReader : Loading XML bean definitions from URL [jar:file:/apps/dubbo/consumer/dubbo-client.jar!/spring-config.xml] 2022-10-04 09:09:33.812 INFO 8 --- [ main] c.a.dubbo.common.logger.LoggerFactory : using logger: com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter 2022-10-04 09:09:33.894 INFO 8 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@62e34c9e: startup date [Tue Oct 04 09:09:33 CST 2022]; root of context hierarchy 2022-10-04 09:09:35.211 INFO 8 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'beanNameViewResolver' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]] 2022-10-04 09:09:35.549 INFO 8 --- [ main] o.s.b.f.c.PropertyPlaceholderConfigurer : Loading properties file from class path resource [config.properties] 2022-10-04 09:09:35.952 INFO 8 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'dubbo-demo-consumer' of type [class com.alibaba.dubbo.config.ApplicationConfig] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2022-10-04 09:09:35.962 INFO 8 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'com.alibaba.dubbo.config.RegistryConfig' of type [class com.alibaba.dubbo.config.RegistryConfig] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2022-10-04 09:09:35.963 INFO 8 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'helloService' of type [class com.alibaba.dubbo.config.spring.ReferenceBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2022-10-04 09:09:36.031 INFO 8 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [class org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$1a2ec94a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2022-10-04 09:09:36.772 INFO 8 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 2022-10-04 09:09:36.795 INFO 8 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat 2022-10-04 09:09:36.797 INFO 8 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.0.30 2022-10-04 09:09:36.928 INFO 8 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2022-10-04 09:09:36.928 INFO 8 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3041 ms 2022-10-04 09:09:37.529 INFO 8 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2022-10-04 09:09:37.541 INFO 8 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2022-10-04 09:09:37.542 INFO 8 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2022-10-04 09:09:37.543 INFO 8 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2022-10-04 09:09:37.543 INFO 8 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2022-10-04 09:09:37.976 INFO 8 --- [server.svc:2181] org.I0Itec.zkclient.ZkEventThread : Starting ZkClient event thread. 2022-10-04 09:09:37.999 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT 2022-10-04 09:09:37.999 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:host.name=myserver-consumer-deployment-5d4cb7db98-4fgvr 2022-10-04 09:09:37.999 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.version=1.8.0_212 2022-10-04 09:09:38.000 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.vendor=Oracle Corporation 2022-10-04 09:09:38.000 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.home=/usr/local/src/jdk1.8.0_212/jre 2022-10-04 09:09:38.000 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.class.path=/apps/dubbo/consumer/dubbo-client.jar:/skywalking-agent/skywalking-agent.jar 2022-10-04 09:09:38.001 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2022-10-04 09:09:38.001 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.io.tmpdir=/tmp 2022-10-04 09:09:38.001 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.compiler=<NA> 2022-10-04 09:09:38.002 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.name=Linux 2022-10-04 09:09:38.002 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.arch=amd64 2022-10-04 09:09:38.002 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.version=5.4.0-126-generic 2022-10-04 09:09:38.003 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.name=user1 2022-10-04 09:09:38.003 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.home=/home/user1 2022-10-04 09:09:38.003 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.dir=/home/user1 2022-10-04 09:09:38.006 INFO 8 --- [ main] org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=zookeeper1.myserver.svc:2181,zookeeper2.myserver.svc:2181,zookeeper3.myserver.svc:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@53020b48 2022-10-04 09:09:38.052 INFO 8 --- [ main] org.I0Itec.zkclient.ZkClient : Waiting for keeper state SyncConnected 2022-10-04 09:09:38.075 INFO 8 --- [edu.local:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server zookeeper2.myserver.svc.magedu.local/10.100.163.136:2181. Will not attempt to authenticate using SASL (unknown error) 2022-10-04 09:09:38.078 INFO 8 --- [edu.local:2181)] org.apache.zookeeper.ClientCnxn : Socket connection established to zookeeper2.myserver.svc.magedu.local/10.100.163.136:2181, initiating session 2022-10-04 09:09:38.159 INFO 8 --- [edu.local:2181)] org.apache.zookeeper.ClientCnxn : Session establishment complete on server zookeeper2.myserver.svc.magedu.local/10.100.163.136:2181, sessionid = 0x20006ab1c430000, negotiated timeout = 30000 2022-10-04 09:09:38.164 INFO 8 --- [ain-EventThread] org.I0Itec.zkclient.ZkClient : zookeeper state changed (SyncConnected) 2022-10-04 09:09:38.216 INFO 8 --- [ main] c.a.d.r.zookeeper.ZookeeperRegistry : [DUBBO] Register: consumer://10.200.158.72/com.od.dubbotest.api.HelloService?application=dubbo-demo-consumer&category=consumers&check=false&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=8&side=consumer×tamp=1664845777720, dubbo version: 2.5.3, current host: 10.200.158.72 2022-10-04 09:09:38.868 INFO 8 --- [ main] c.a.d.r.zookeeper.ZookeeperRegistry : [DUBBO] Subscribe: consumer://10.200.158.72/com.od.dubbotest.api.HelloService?application=dubbo-demo-consumer&category=providers,configurators,routers&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=8&side=consumer×tamp=1664845777720, dubbo version: 2.5.3, current host: 10.200.158.72 2022-10-04 09:09:39.015 INFO 8 --- [ main] c.a.d.r.zookeeper.ZookeeperRegistry : [DUBBO] Notify urls for subscribe url consumer://10.200.158.72/com.od.dubbotest.api.HelloService?application=dubbo-demo-consumer&category=providers,configurators,routers&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=8&side=consumer×tamp=1664845777720, urls: [dubbo://10.200.233.76:20880/com.od.dubbotest.api.HelloService?anyhost=true&application=dubbo-demo-service&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=9&side=provider×tamp=1664844391312, dubbo://10.200.233.76:20880/com.od.dubbotest.api.HelloService?anyhost=true&application=dubbo-demo-service&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=9&side=provider×tamp=1664844390356, empty://10.200.158.72/com.od.dubbotest.api.HelloService?application=dubbo-demo-consumer&category=configurators&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=8&side=consumer×tamp=1664845777720, empty://10.200.158.72/com.od.dubbotest.api.HelloService?application=dubbo-demo-consumer&category=routers&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=8&side=consumer×tamp=1664845777720], dubbo version: 2.5.3, current host: 10.200.158.72 2022-10-04 09:09:39.638 INFO 8 --- [ main] c.a.d.remoting.transport.AbstractClient : [DUBBO] Successed connect to server /10.200.233.76:20880 from NettyClient 10.200.158.72 using dubbo version 2.5.3, channel is NettyChannel [channel=[id: 0x3f5222c9, /10.200.158.72:37246 => /10.200.233.76:20880]], dubbo version: 2.5.3, current host: 10.200.158.72 2022-10-04 09:09:39.639 INFO 8 --- [ main] c.a.d.remoting.transport.AbstractClient : [DUBBO] Start NettyClient myserver-consumer-deployment-5d4cb7db98-4fgvr/10.200.158.72 connect to the server /10.200.233.76:20880, dubbo version: 2.5.3, current host: 10.200.158.72 2022-10-04 09:09:39.927 INFO 8 --- [ main] com.alibaba.dubbo.config.AbstractConfig : [DUBBO] Refer dubbo service com.od.dubbotest.api.HelloService from url zookeeper://zookeeper1.myserver.svc:2181/com.alibaba.dubbo.registry.RegistryService?anyhost=true&application=dubbo-demo-consumer&check=false&dubbo=2.5.3&interface=com.od.dubbotest.api.HelloService&methods=hello&pid=8&side=consumer×tamp=1664845777720, dubbo version: 2.5.3, current host: 10.200.158.72 2022-10-04 09:09:40.800 INFO 8 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@62e34c9e: startup date [Tue Oct 04 09:09:33 CST 2022]; root of context hierarchy 2022-10-04 09:09:41.138 INFO 8 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/bj]}" onto public java.lang.String com.od.dubbotest.action.BjAction.say(java.lang.String) 2022-10-04 09:09:41.144 INFO 8 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello]}" onto public java.lang.String com.od.dubbotest.action.HelloAction.say(java.lang.String) 2022-10-04 09:09:41.153 INFO 8 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2022-10-04 09:09:41.155 INFO 8 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2022-10-04 09:09:41.243 INFO 8 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2022-10-04 09:09:41.244 INFO 8 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2022-10-04 09:09:41.474 INFO 8 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2022-10-04 09:09:42.162 INFO 8 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2022-10-04 09:09:42.411 INFO 8 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2022-10-04 09:09:42.424 INFO 8 --- [ main] com.od.dubbotest.Application : Started Application in 12.545 seconds (JVM running for 23.897) Dubbo client started Dubbo 消费者端启动
外部访问k8s集群consumer
root@easzlab-deploy:~# kubectl logs -f -n myserver myserver-consumer-deployment-5d4cb7db98-4fgvr
4.3、验证skywalking server 端是否采集到k8s dubbo服务
4.4、横向扩容provider
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/provider# vi provider.yaml
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/provider# cat provider.yaml
kind: Deployment apiVersion: apps/v1 metadata: labels: app: myserver-provider name: myserver-provider-deployment namespace: myserver spec: replicas: 3 selector: matchLabels: app: myserver-provider template: metadata: labels: app: myserver-provider spec: containers: - name: myserver-provider-container image: harbor.magedu.net/magedu/dubbo-provider:v1-20221003-zookeeper1 #imagePullPolicy: IfNotPresent imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: http --- kind: Service apiVersion: v1 metadata: labels: app: myserver-provider name: myserver-provider-spec namespace: myserver spec: type: NodePort ports: - name: http port: 8080 protocol: TCP targetPort: 8080 nodePort: 38800 selector: app: myserver-provider
此时skywalking server端 Service面板可以看到多个副本指标
4.5、部署dubboadmin微服务管理平台
root@easzlab-deploy:~/jiege-k8s/20221002/yaml/myserver/dubbo/dubboadmin# cat dubboadmin.yaml
kind: Deployment apiVersion: apps/v1 metadata: labels: app: myserver-dubboadmin name: myserver-dubboadmin-deployment namespace: myserver spec: replicas: 1 selector: matchLabels: app: myserver-dubboadmin template: metadata: labels: app: myserver-dubboadmin spec: containers: - name: myserver-dubboadmin-container image: harbor.magedu.net/magedu/dubboadmin:v2.5.3-20221003-zookeeper1 #imagePullPolicy: IfNotPresent imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: http --- kind: Service apiVersion: v1 metadata: labels: app: myserver-dubboadmin name: myserver-dubboadmin-service namespace: myserver spec: type: NodePort ports: - name: http port: 80 protocol: TCP targetPort: 8080 nodePort: 30080 selector: app: myserver-dubboadmin
通过浏览器访问验证信息