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
相关文章
相关标签/搜索