7-k8s额外篇

在使用ingress 的时候。会遇到一个一个业务上的问题。什么问题呢,ingress是连接外部网络和k8s docker 内部网络的一个应用。ingress 是根据service 来做到访问的。如果你对k8s了解一点的话。你可能就知道他们的关系了。
这里简单的描述一下。
node上可以有多个namespaces,一个namespace可以有多个service,deployment,Daemonset等等。。
service的作用就是将pods 供网络访问(这里指的是网络,包括内部网络和外部网络),然而呢一个service 对应的是多个pod。pods并且是游离的,不知道在那个node上面。
 
那么问题来了。ingress是通过service来访问pods的,但是具体的执行的是哪一个pods,那这就鬼知道了,但是开发过程中,难免会遇到这样的场景,我就必须访问service下的某一个节点。(我们做的是区块连的项目遇到了)
我使用的技巧是。
当页面展示pods的信息的时候,会看到pod的内部网络ip clusterIp,好就用它了
拿着这个clusertIp 去请求ingress的一个服务。这个服务是自己写的一个。其完成的功能就是一个restclient
 
 
 
 
跨域的话,按道理来说是用不到的,但是我加了,这样就做的比较通用了
 
配置文件就没啥了
 
pom.xml文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
 
好了,打个镜像吧
首先你得准备一个hub 的帐号, 去 https://hub.docker.com 注册吧!
然后呢,通过docker login 登录帐号
在然后呢
打镜像 登录linux系统(安装过docket呀)
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springboot-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
 
docker build -t api . //builde 就行了,成功后就可以docker image看到了
docker tag api:latest muhaifeng/api-getway //然后给他打个标签
docker push muhaifeng/api-getway:latest //将镜像传到的dockerhub上这个名称好像是以自己的名字开头,我的注册的名字是muhaifeng
 
再在然后呢。看自己的dockerhub 就会出现自己打的镜像 了
下面是我的账户下的信息
 
然后就搞定了。
部署一个Deployment 或DaemonSet(这个是每一个节点都跑) 看个人喜欢和具体的场景
traffic.zip
posted @ 2018-07-18 16:39  沐海风  阅读(317)  评论(0编辑  收藏  举报