k8s项目本地运行

/ 0评 / 0

凤凰架构地址

项目地址

1.build docker镜像

每一个服务里面都有一个docker file文件,刚开始我手动build那个docker file,发现build出来,没有tag,然后重新看了下项目,发现大佬已经把build全写进travis_docker_push.sh,本地起把开头的echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin去掉,重新定义下DOCKER_USERNAME就好.

2.k8s启动

yaml文件是bookstore.yml,注意下自己k8s的版本,yaml文件里面有的apiVersion有的在不同版本上会deprecated,然后kubectl apply -f bookstore.yml,顺利的话会一把起来:

pod:

image-20220322002146560

service

image-20220322002245872

gateway上面有个NodePortservice,映射端口30080,本地localhost:30080

image-20220322002350537

3.skaffold启动

通过skaffold启动的集群,当文件或者jar包发生变化时,可以重新deploy到集群里面去,并且如果本地调试的时候,在pod上面开启jdwp,Cloud code会自动把servicepod上的流量打到idea上来
步骤:

  1. 下载skaffold

  2. 配置环境变量,并切到项目下运行skaffold dev

    image-20220322223116806

  3. idea安装cloud code插件,并运行Cloud code:Kubernetes,然后debug启动,控制台输出了很多forward信息.这里主要把k8s集群中的servicepod上面的流量打过来,我挑了两行解释下:

    • 转发service流量

      本机启动后,端口为8081(似乎是随机分配的一个端口),然后service的流量会打过来

      Port forwarding service/gateway in namespace bookstore-microservices, remote port 8080 -> http://127.0.0.1:8081
    • 转发pod流量

      这个就是远程debug的功能(jdwp),pod项目启动的时候会开放5005端口,本机启动的时候会attach上去,远程有访问,流量就会进来.

    Port forwarding pod/bookstore-microservices-domain-payment-84b9948fb-wgcgw in namespace bookstore-microservices, remote port 5005 -> http://127.0.0.1:5010
    

    流量转发的功能,我在gateway的pod上面看到了一个tunnel0的网卡,不知道和这个有没有关系,最后访问http://localhost:30080,流量打到了idea上面:
    image-20220322224149703

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注