两种简单的方式实现外部访问k8s中的pod服务端口
文章目录1、使用hostPort的方式2、使用NodePort的方式1、使用hostPort的方式这是一种直接定义Pod网络的方式。hostPort是直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过宿主机的IP加上来访问Pod了。[root@master opt]# vim hostpath.yml'创建一个yml文件,指定对外服务的端口'apiVersion: v1kind: Po
·
1、使用hostPort的方式
这是一种直接定义Pod网络的方式。hostPort是直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过宿主机的IP加上来访问Pod了。
[root@master opt]# vim hostpath.yml '创建一个yml文件,指定对外服务的端口'
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: nginx
name: test-container
ports:
- containerPort: 80
hostPort: 8081
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
path: /opt/yml
[root@master opt]# kubectl create -f hostpath.yml '执行,等待pod创建完毕'
pod/test-pd created
[root@master opt]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-dbddb74b8-gtc99 1/1 Running 0 16h
test-pd 0/1 ContainerCreating 0 11s
[root@master opt]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-dbddb74b8-gtc99 1/1 Running 0 16h
test-pd 1/1 Running 0 28s
[root@master opt]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-dbddb74b8-gtc99 1/1 Running 0 16h 172.17.71.3 192.168.179.123 <none>
test-pd 1/1 Running 0 34s 172.17.71.5 192.168.179.123 <none>
通过访问POD所在NODE的IP和映射的端口就能访问POD的服务了
2、使用NodePort的方式
nodePort在kubenretes里是一个广泛应用的服务暴露方式。Kubernetes中的service默认情况下都是使用的ClusterIP这种类型,这样的service会产生一个ClusterIP,这个IP只能在集群内部访问,要想让外部能够直接访问service,需要将service type修改为 nodePort。
[root@master opt]# vim httpdpod.yml
apiVersion: v1
kind: Pod
metadata:
name: httpd
labels:
name: httpd
spec:
containers:
- name: httpd
image: httpd
ports:
- containerPort: 80
[root@master opt]# vim rc1server.yml
kind: Service
apiVersion: v1
metadata:
name: httpd
spec:
type: NodePort
ports:
- port: 80
nodePort: 38899
selector:
name: httpd
[root@master opt]# kubectl create -f httpdpod.yml
pod/httpd created
[root@master opt]# kubectl get pods
NAME READY STATUS RESTARTS AGE
httpd 0/1 ContainerCreating 0 10s
nginx-dbddb74b8-gtc99 1/1 Running 0 17h
test-pd 1/1 Running 0 45m
[root@master opt]# kubectl get pods
NAME READY STATUS RESTARTS AGE
httpd 1/1 Running 0 57s
nginx-dbddb74b8-gtc99 1/1 Running 0 17h
test-pd 1/1 Running 0 45m
[root@master opt]# kubectl create -f rc1server.yml
service/httpd created
Kubernetes中的pod访问还有两种方式
port方式
port是在Service IP中使用的,使用Service IP +Port就可以访问到服务
targetPort方式
targetPort 说的是Pod内的应用暴露的服务端口,Service IP+Port的访问会被代理到这个Target Port
更多推荐
已为社区贡献9条内容
所有评论(0)