yjk使用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

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

chmod +x k8s-start.sh

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

基于05创建镜像vtest06的Dockerfile

From registry.cn-shanghai.aliyuncs.com/yjk-datag/haozhuo-video:vtest05
MAINTAINER PDABC Enterprise Container Images 

ENTRYPOINT ["/bin/sh", "/srv/tomcat/tomcat-haozhuo-video/bin/k8s-start.sh"]

启动感觉换成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

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

yjk使用k8s运行dubbo服务_第1张图片

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

ip已经变成node的ip了

yjk使用k8s运行dubbo服务_第2张图片

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

8820

yjk使用k8s运行dubbo服务_第3张图片

20920

yjk使用k8s运行dubbo服务_第4张图片

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

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

yjk使用k8s运行dubbo服务_第5张图片

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

yjk使用k8s运行dubbo服务_第6张图片

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

yjk使用k8s运行dubbo服务_第7张图片

yjk使用k8s运行dubbo服务_第8张图片

资源限制也获取的到

你可能感兴趣的:(kubernetes)