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

mQINBFexsykBEADLnnAGVSx1tsHbnBnzao9j055C0ObypWma0qMnpFaLKBOb669k
R/tYM6a6mSvhvJ4DA5u70kqqv2YD1nZXOG14DQgponxHGxbMnXoA2BwE0I7n+Q29
RT2Zh7nZ59CG70VV8Hbc8WWH3Zb//D1WE6ygLkahFM2+x9LuRcIymyNnX67AWJdz
S/Rof9uAjLXNYSSbcaeclVn6S7ZS5tayG0UgjSOdjptaLP8jsT9ia9XSBkFemXV5
p144MEuZxUNxcXz1UMAcW3CmBtDBzN+8zlFdYO/7u/S6iXnaWUXqCtV9KmngP1f2
z8YQz5UYOS3hW+IeFxxdSahdVuHHNnqH9zfp7I3L92zX9Ar19HAvyJLt/ATnCtOB
dTNMZgpzM8Z2+gvENhb2ewp3zKalFLNCgipns5j1u8dWX01uO6dJURA53UvFiY9E
7dmBTxGu58Mtdpy/l+Jx5FugNEjTJWL+xMt9OXWTtOT0yzwb0VaiESrmjTZ/Vg0W
C4jRZSitbdWptjreI/tIFf3thIbzFwD3YyFkHK/9MTHjn3iBS0RxT+jKwdz53dQP
r4HVzJSAfI7tjlWi3/TbasAiGj8l0QRs4ygvwpTEOq0V9qPsuPpVHXhpOmF5++iS
00b8zqP3d4WqIs1GPXvPfCPwnQZ/7eespEGnDy/FBLUGfIQx4V9TQBVr0wARAQAB
tDxSYWtlc2ggUmFkaGFrcmlzaG5hbiAoQ09ERSBTSUdOSU5HIEtFWSkgPHJha2Vz
aHJAYXBhY2hlLm9yZz6JAjcEEwEIACECGwMCHgECF4AFAlextEcFCwkIBwMFFQoJ
CAsFFgIDAQAACgkQ9c7LPLXpvS3fiA//awK97QyMaGjodxgiCKyRn5Ah4qTbvc+I
/cDx8blZq220kiI46Q3jykmPRO7iOz4mh446Yxn3S2PC9Y0eHUSGenIQc1tDxKWP
Ta8ZZfzdtvsXQ+Wo7+OpozU8u64qDiO8SN6t1fe5waLtFmAvEboHPOKV46kwMBOr
SyOQvDruI/+A1W0gUqKddFFwt5TsVrN1h49MGNHkJ8t46epefua/7bkNwhUMgUSB
3FhIMWTKlk1U1CCcSlpwvqhFDiNpqujEpmry/ftmtAyn5Va/Zb4tUQvqzolxtGxa
bWPsKFenTmH3LslknPpdOIuZrD6JhLW0HcCAbI5xmAzLC/+IdM7SZ2QPwMMta9T6
clx2NHNqTRPUtFtrAiXX5hJMxhw4Csjj8dYoJxE7FP8oa/PlhWMwoe6HCYyE0Zbi
iyuxUiYh/5LDfdegiL82TRyCE87pm6DBLO4N/uu2F7qeeCsYj7Dv8QwqoMpqmncr
deLzVdHS4YsVVBa8k/TSS4Pk0y3yW/2YtAP9wfNHb54h2FnLv65//26DzoApMd5Y
abJNTRuaGC61nFxta8anvIPZGRbP+ILdR1z8mCVJGd32LkYOwb9HAuetFdnA4G2P
wMqCxTuoISuMzAX5ZJlyw7Zz1fGM+/E+WD6iMhV0HPm5+ICngcEOqlzyOlr8TmOY
uyUJTNFgOCG5Ag0EV7GzKQEQANTYG742SoRj27zBWG1n58qeYz0rUyRCT/9s2Dzt
Sqp7qF6P5WxttJgjm+Qt04GFYHU17LjzwwanGOSo1IpsANFxXXbUNByd0CuOx6oY
WYVWrvMO1uy0FMR5eD55QLdwB+qBrQSbsCiKy/dnzgYMgjiwDG07pxJeVxNqriSq
LTrtOJ6eFCQIn45dHWejUxjxZkFePOGGNn/3l0gJXgKM6Myweg+dtfNugG8ejJHA
g8qjP0MLXoPMtxbiCjmidslfdejs+uWcqADEwEewn+NeS9nAlJMyZR23X2kGMJyH
5C8nprKmhtBuQC5hi1FNldZ+bUFL3eexuktAdu5ed9mc2JzobM5r5HULRWzb7kze
ZGvsWujiaW2TppXbkSkMMKchjWoFOsGWDzqv0bp8gobALa6GyX+xgiyeJIAhrHxb
q0KeWjo0YlwVPSO4GOCu0/4Sl6+S6pRd0Fd3rqG90Xmnxa0b14vhof59icSspvWW
4L2/I5Kvv7pjot3x0UkuNPkELzo/oM7tStO/k072XQ0FW64PasOWyzydj5tEbbTA
vYXKBBLzBIeCXwS8wB6TfAtCq5iAt1aLGC9JtZuQHCn37/wws0/OCfKT5T9uTAAY
NKIaKDRjTe+3Cp3grAChCwZj1/wEaBIR5JYzXVR6EIEZU4FE+UhuJYyzHRmgGkxP
BsnVABEBAAGJAh8EGAEIAAkFAlexsykCGwwACgkQ9c7LPLXpvS3qeA//cFwC5kqW
TQjjmycTjWcVuNXYVzHNnMhBSdZ63D9c1ANuTtAWL/iSQbzPtxDaCMUXim11vV/I
fr51T6kbr71M+fxq0w3/bzUFB+bxkRBmm4Zn30cmAzwZ0c77tfR8FXLMTzg6K8TQ
ZitC8oXPa7x5JKhzevXVprxnew3SsQHvAEPUo56x5udz8+0iaBGOEasqp8U5KxBk
x7Fd2VG2bX8ttFaw1I6Ua3O/Zahsdzb8QVZJ7/PL9V+HgdZaxoLWzipi/oTW8iLf
YZJsh5BYiPOd+1hhApKkQmK0t2Wc03TkOqLP/1Bhvn+HrGjkvSJcu65HZwFki7y4
aYWBo6mKcjpIfsLVaByWbYk68J0j0sOkCqb+iJAXa83njYUfCR4I2a11tZPTvpJH
V+LSuFz3r7zH1vDbzFivTDYvUOTTex8bCyEiXZA+PAdJ8yIWMBx1qchdVRNInYCq
TfjQ1SjYM0QngXspmNR1un6oh1gPoFLWKPWMtaodynpfqMpsdyWx395rdO7OhL8l
GiGZGDeks6Q8B5hb+b4odLEuvj/DJztKPw/D6NSJsHdaVjGNzlDnrgJEtl9NHNfh
Abypw6uLmiDbV2TdOTrPcmv2JSbtOQbwgFBOrQIEn3kHN0uxCDVgGzfFpTorhTkH
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-----

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
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-----
View Code

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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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

通过浏览器访问验证信息

 

posted @ 2022-10-04 10:38  cyh00001  阅读(2764)  评论(0编辑  收藏  举报