K8S 之 为一个POD创建对外发布服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S 之 为一个POD创建对外发布服务相关的知识,希望对你有一定的参考价值。
一、服务介绍Kubernetes服务是一种为一组功能相同的pod提供单一不变的接入点的资源。当服务存在时,它的IP地址和端口不会改变。客户端通过IP地址和端口号建立连接,这些连接会被路由到提供该服务的任意一个pod上。通过这种方式,客户端不需要知道每个单独的提供服务的pod的地址,这样这些pod就可以在集群中随时被创建或移除。
二、为一个pod创建service
1、创建一个pod
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web #标签选择器app:web
namespace: test
spec:
containers:
- name: nginx-test
image: test-harbor.cedarhd.com/public/nginx:curl
ports:
- containerPort: 80 #容器端口
2、为该pod创建对应的service
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: test
spec:
ports:
- port: 80 #该service服务的可用对外端口
targetPort: 80 #服务将连接转发到容器的端口
selector:
app: web #具有app=web标签的pod都属于该服务
[root@test-nodes1 k8s-yaml-file]# kubectl get svc -n test
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx ClusterIP 192.168.81.180 <none> 80/TCP 8m8s
[root@test-nodes1 k8s-yaml-file]# kubectl get pod -o wide -n test
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 27m 172.7.21.6 test-nodes1.cedarhd.com <none> <none>
[root@test-nodes1 k8s-yaml-file]# ipvsadm -ln | grep -C 3 192.168.81.180
TCP 192.168.66.183:80 nq
-> 172.7.21.3:8082 Masq 1 0 0
-> 172.7.22.4:8082 Masq 1 0 0
TCP 192.168.81.180:80 nq #对应
-> 172.7.21.6:80 Masq 1 0 0
TCP 192.168.96.231:80 nq
-> 172.7.21.6:80 Masq 1 0 0
三、同一个服务暴露多个端口
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: test
spec:
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
selector:
app: web
备注:在创建一个有多个端口的服务的时候,必须给每个端口指定名字。
以上是关于K8S 之 为一个POD创建对外发布服务的主要内容,如果未能解决你的问题,请参考以下文章