kubectl ingress_kubernetes ingress

kubectl ingress_kubernetes ingressKubernates之ingress方式部署springboot

大家好,又见面了,我是你们的朋友全栈君。

    部署一个简单的springboot服务,有个restful接口,如下:

    List-1

mjduan@mjduan-host:/opt/software/tool/virtualbox-vagrant/master$ curl http://192.168.33.10:30002/person/1
{"id":1,"name":"name=1","address":"address"}
mjduan@mjduan-host:/opt/software/tool/virtualbox-vagrant/master$ 

1、NodePort方式暴露端口

    我们将这个springboot部署到k8s上,制作镜像就不描述了,k8s的yaml文件如下,之后执行”kubectl  apply  -f  k8s-demo.yaml”,就可以了。

    List-1.1  k8s-demo.yaml

apiVersion: v1
kind: Service
metadata:
  name: k8s-learn-service
  namespace: default
  labels:
    app: k8s-learn-service
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30002
  selector:
    app: k8s-learn-service

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-learn-deployment
  labels:
    app: k8s-learn-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: k8s-learn-service
  template:
    metadata:
      labels:
        app: k8s-learn-service
    spec:
      containers:
      - name: k8s-learn-container1
        image: k8s-learn:1.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        volumeMounts: 
        - mountPath : /opt/applog
          name: my-volume
      volumes:
      - name: my-volume
        emptyDir: {}

2、ClusterIP方式,用Ingress暴露端口

    NodePort方式,是直接暴露端口,这种方式不是很好。ClusterIP方式,集群外是访问不了的,我们用Ingress方式来暴露端口,如下:

    List-2.1 k8s-demo.yaml

apiVersion: v1
kind: Service
metadata:
  name: k8s-learn-service
  namespace: default
  labels:
    app: k8s-learn-service
spec:
  type: ClusterIP
  ports:
  - port: 8080
  selector:
    app: k8s-learn-service

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-learn-deployment
  labels:
    app: k8s-learn-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: k8s-learn-service
  template:
    metadata:
      labels:
        app: k8s-learn-service
    spec:
      containers:
      - name: k8s-learn-container1
        image: k8s-learn:1.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        volumeMounts: 
        - mountPath : /opt/applog
          name: my-volume
      volumes:
      - name: my-volume
        emptyDir: {}

    之后执行”kubectl  apply  -f k8s-demo.yaml”,之后查看该服务:

    List-2.2

[root@master springboot]# kubectl get services
NAME                               TYPE           CLUSTER-IP       EXTERNAL-IP                                 PORT(S)                          AGE
...
k8s-learn-service                  ClusterIP      10.107.55.103    <none>                                      8080/TCP                         3m
...

    之后创建用于ingress,如下

    List-2.3  springboot-ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: apps-springboot
spec:
  rules:
  - host: springboot-ui
    http:
      paths:
      - path: /
        backend:
          serviceName: k8s-learn-service
          servicePort: 8080

    执行”kubectl  apply  -f  springboot-ingress.yaml “,查看ingress状态:

    List-2.4

[root@master springboot]# kubectl get ingress
NAME               HOSTS           ADDRESS   PORTS     AGE
apps-springboot    springboot-ui             80        17m

    之后在你本地/etc/hosts中加入”k8s的任一节点IP  springboot-ui”,在浏览器中访问”http://springboot-ui/person/12″

转载于:https://my.oschina.net/u/2518341/blog/3041545

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106860.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux系统(根目录下)目录介绍

    Linux系统(根目录下)目录介绍1./bin目录/bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序(bin是binary–二进制的简称)

    2022年7月2日
    34
  • appsettings与connectionstrings

    appsettings与connectionstrings这篇文章源于我在做一个手机号码归属地的例子时用到了配置文件,于是像视频上说的那样,我在app.config中写下了这段代码:可是却出现了在运行中弹出这样的错误提示:    很是郁闷,查了很多资料,反复看自己写的代码,可就是不知道到底错哪儿了,于是找了大神帮我查了,用大话设计模式中的配置文件方法做了修改,结果程序可以跑起来了:

    2022年5月11日
    69
  • java 大学考试_java考试 (全部)「建议收藏」

    java 大学考试_java考试 (全部)「建议收藏」该楼层疑似违规已被系统折叠隐藏此楼查看此楼importjava.awt*;importjava.awtevent*;classABCimplementsActionListener,WindowListener{Buttonb1;Buttonb2;TextPieldshowing;publicvoidactionperformed(ActionEvente){if(e…

    2022年7月7日
    19
  • jquery删除添加输入文本框

    效果体验:http://hovertree.com/texiao/jquery/67/效果图:参考:http://hovertree.com/h/bjaf/traversing_each.htm代码如

    2021年12月24日
    46
  • DropDownList1.SelectedIndex及DropDownList1.SelectedValue的赋值[通俗易懂]

    DropDownList1.SelectedIndex及DropDownList1.SelectedValue的赋值[通俗易懂]困扰好长时间的一个问题,理解之后发现这么简单我定义了一个DropDownList绑定了一个数据表,里面没有静态数据,我想让它编辑的时候传值过来选定要编辑那项,上网找了好多方法,可怎么也不能实现,后来查了SelectedValue的定义。publicvirtualstringSelectedValue{     get     {           intnum1=this.SelectedIndex;           if(num1>=0)           {     

    2022年7月18日
    18
  • 30自制操作系统的第一天12天 计时器(1)

    30自制操作系统的第一天12天 计时器(1)

    2022年1月4日
    50

发表回复

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

关注全栈程序员社区公众号