用rancher 创建k8s的Deployment、Service、Ingress

准备helloworld程序

创建一个springboot程序,加入一个hello接口,端口默认8080

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() throws UnknownHostException {
        InetAddress ia = null;
            ia = InetAddress.getLocalHost();
            String localname = ia.getHostName();
            String localip = ia.getHostAddress();
            System.out.println("本机名称是:" + localname);
            System.out.println("本机的ip是 :" + localip);
        return "hello,ip is "+localip;
    }
}

将pom文件修改(可忽略)

在这里插入图片描述

将springboot打包成镜像

这里的helloword-1.0.jar是我打包的名字,实际可按你自己的名字来
下面是Dockerfile

FROM openjdk:8
VOLUME /tmp
ADD  helloword-1.0.jar app.jar
RUN echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8666
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","/app.jar"]

将Dockerfile和elloword-1.0.jar放到同个目录下,运行下面指令
含义就是吧jar包根据Dockerfile打包成镜像叫做10.19.64.203:8080/test/helloword-1.0

docker build --no-cache -t 10.19.64.203:8080/test/helloword-1.0 .

推送到docker仓库

仓库每个人可能不一样,反正指令含义一样就行,如果下面命令不行,请自己搜索一下

docker push 10.19.64.203:8080/test/helloword-1.0

在rancher创建Deployment

在这里插入图片描述

在这里插入图片描述

在rancher创建Service

在这里插入图片描述
在这里插入图片描述
内部service选Cluster IP ,想外部暴露端口选Node Port ,这里选Node Port
在这里插入图片描述
这里的selector要回去之前创建成功的Deployment查看,查看pod的标签,这里会起到识别的作用
在这里插入图片描述
在图中为 workload.user.cattle.io/workloadselector apps.deployment-default-hello6
也可以修改deployment的Pod Labels进行修改成自定义的

填写下面的name的service ports

在这里插入图片描述
在这里插入图片描述
点击页面的30016/TCP,跳转目标服务
在这里插入图片描述
在这里插入图片描述
再访问外面定义的接口
ip:端口/hello
在这里插入图片描述

完成service

在rancher创建Ingress

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建
在本机的host文件加入你指定的域名,这里是hello6.com 映射到你的k8s的master ip上
windows的路径为C:\Windows\System32\drivers\etc\hosts
在这里插入图片描述
访问成功

路径重写的Ingress

路径重写的方法,可用于转发多个service
加入Annotation key为nginx.ingress.kubernetes.io/rewrite-target value为$2

在这里插入图片描述
路劲改为/hello6(/|$)(.*)
在这里插入图片描述
这样就会重写hello6的路径,否则会把hello6带到转发路径里面
在这里插入图片描述

结束

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐