Servece
简介: 将一组 Pods 公开为网络服务的抽象方法。
1.0 ClusterIP
1.ClusterIP
ClusterIP 类型的 service 是 kubernetes 集群默认的服务暴露方式,它只能用于集群内部通信,可以被各 pod 访问,其访问方式为:
**pod ---> ClusterIP:ServicePort --> (iptables)DNAT --> PodIP:containePort**
我们可以使用一行命令创建,也可以使用yaml 创建
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
ports:
- port: 8000 #service 暴露的端口
protocol: TCP
targetPort: 80 #pod的指向端口
selector:
app: my-dep #标签 app=my-dep
type: ClusterIP #servece 类型
1.1.1 使用命令创建
使用命令创建
[root@master kubernets]# kubectl expose deploy my-dep --port=8000 --target-port=80
service/my-dep exposed
[root@master kubernets]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d
my-dep ClusterIP 10.96.242.89 <none> 8000/TCP 9s
==查看pod 的标签==
[root@master kubernets]# kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
my-dep-6b48cbf4f9-9qrv4 1/1 Running 0 21h app=my-dep,pod-template-hash=6b48cbf4f9
my-dep-6b48cbf4f9-ndpvn 1/1 Running 0 21h app=my-dep,pod-template-hash=6b48cbf4f9
命令小结
==查看pod标签==
kubectl get pod --show-lables
==创建service==
expose 暴露端口
deploy Deployment
my-dep pod名字
--port=8000 指定service端口
--target-port 指定pod端口
2.0 NodePort
2.NodePort
如果你想要在集群外访问集群内部的服务,可以使用这种类型的 service,NodePort 类型的 service 会在集群内部署了 kube-proxy 的节点打开一个指定的端口,之后所有的流量直接发送到这个端口,然后会被转发到 service 后端真实的服务进行访问。Nodeport 构建在 ClusterIP 上,其访问链路如下所示:
client ---> NodeIP:NodePort ---> ClusterIP:ServicePort ---> (iptables)DNAT ---> PodIP:containePort
我们可以使用一行命令创建,也可以使用yaml 创建
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-dep
type: NodePort
NodePort范围在 30000-32767 之间
2.2.2 使用命令创建
使用命令创建
[root@master kubernets]# kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort
service/my-dep exposed
[root@master kubernets]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d
my-dep NodePort 10.96.172.146 <none> 8000:32161/TCP 5s
我们可以看到8000端口后多了一个端口,这个端口就是k8s内部分配的ip 默认分配的范围在30000-32767 之间,我们可以在外部使用这个端口访问到我们的pod
😃😃😃
命令小结
==指定创建类型==
--type 指定类型: NodePort ClusterIP