当前位置:   article > 正文

[kubernetes]-使用k8s运行dubbo服务_k8s加dubbo

k8s加dubbo

先拿自己的base镜像 也就是之前在容器里跑的镜像做一下修改。

在tomcat的bin路径下创建一个k8s-start.sh 内容如下

sh /srv/tomcat/tomcat-haozhuo-video/bin/startup.sh
tailf  /srv/tomcat/tomcat-haozhuo-video/logs/catalina.out
  • 1
  • 2

然后给k8s-start.sh加上执行权限

chmod +x k8s-start.sh
  • 1

commit镜像 并上传仓库

docker commit -m "edit k8s-start.sh"  test-video  registry.cn-shanghai.aliyuncs.com/yjk-datag/haozhuo-video:vtest05
docker push registry.cn-shanghai.aliyuncs.com/yjk-datag/haozhuo-video:vtest05
  • 1
  • 2

基于05创建镜像vtest06的Dockerfile

From registry.cn-shanghai.aliyuncs.com/yjk-datag/haozhuo-video:vtest05
MAINTAINER PDABC Enterprise Container Images <xujiamin@hz-health.cn>

ENTRYPOINT ["/bin/sh", "/srv/tomcat/tomcat-haozhuo-video/bin/k8s-start.sh"]
  • 1
  • 2
  • 3
  • 4

启动感觉换成jar包启动会更好 这样1号进程就是启动进程了。现在还是丢在tomcat里的

pod创建过程如下

yaml文件如下

apiVersion: apps/v1
kind: Deployment
metadata:
# deployment名字 和svc 和ingress绑定没关系
  name: haozhuo-video-dp
  namespace: test
spec:
  replicas: 1
  # 在定义模板的时候必须定义labels,因为Deployment.spec.selector是必须字段,而他又必须和template.labels对应
  selector:
    matchLabels:
      app: haozhuo-video
  # template里面定义的内容会应用到下面所有的副本集里面(例如depolyment下的pod),在template.spec.containers里面不能定义labels标签。可以kubectl get pods --show-labels查看
  template:
    metadata:
      labels:
        app: haozhuo-video
        env: test
    spec:
      containers:
      # containers名字 和svc 和ingress绑定没关系
      - name: haozhuo-video
        image: registry.cn-shanghai.aliyuncs.com/yjk-datag/haozhuo-video:vtest06
        env:
        - name: DUBBO_IP_TO_REGISTRY
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
        - name: DUBBO_PORT_TO_REGISTRY
          value: "20920"
        resources:
          limits:
            cpu: 2000m
            memory: 2048Mi
          requests:
            cpu: 1000m
            memory: 1024Mi
        ports:
        - name: liveness-port
          containerPort: 8080
          hostPort: 8820
        - name: readiness-port
          containerPort: 20920
          hostPort: 20920

        livenessProbe:
          tcpSocket:
            port: liveness-port
          initialDelaySeconds: 20
          periodSeconds: 3

        readinessProbe:
          tcpSocket:
            port: readiness-port
          initialDelaySeconds: 30
          periodSeconds: 10

      imagePullSecrets:
      - name: aliyun-ns-test
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

如果不加上env参数注册dubbo的ip会变成pod的ip 不是host的ip 访问会有问题

加上env那块的参数 注册上就正常 显示host的ip 这回到node2上了

ip已经变成node的ip了

telnet 一下主机的8820和20920 分别对应容器内8080的tomcat端口,以及20920的dubbo端口

8820

20920

测试杀掉tomcat的进程 关闭8080端口

发现容器重启了 tty也断开了

容器状态从ready 1/1变成0/1,再通过重启 变成1/1

杀死tailf 进程也是一样的效果

资源限制也获取的到

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/169555
推荐阅读
相关标签
  

闽ICP备14008679号