0
点赞
收藏
分享

微信扫一扫

Kubernetes Service

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
举报

相关推荐

0 条评论