网站建设报价选兴田德润,毕业设计静态网站建设选题依据,中建海峡建设发展有限公司网站,南方科技大学网站建设K8s service (二)
Endpoint
Endpoint是kubernetes中的一个资源对象#xff0c;存储在etcd中#xff0c;用来记录一个service对应的所有pod访问地址#xff0c;它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成#xff0c;这些Pod通过Endpoints…K8s service (二)
Endpoint
Endpoint是kubernetes中的一个资源对象存储在etcd中用来记录一个service对应的所有pod访问地址它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成这些Pod通过Endpoints暴露出来Endpoints是实现是服务的端点集合。换句话说service和pod之间的联系是通过endpoints实现的。 [rootmaster ~]# kubectl get endpoints -n dev -o wide
NAME ENDPOINTS AGE
service-clusterip 10.244.1.39:80,10.244.1.40:80,10.244.2.33:80 50m HeadLiness类型的Service 几乎不会用于生产
在某些场景中开发人员可能不想使用Service提供的负载均衡功能而希望自己来控制负载均衡策略针对这个中情况kubernetes提供了HeadLiness Service这类Service不会分配ClusterIP如果想要访问service只能通过service的域名进行查询。 创建service-headliness.yaml
apiVersion: v1
kind: Service
metadata: name: service-headliness namespace: dev
spec: selector: app: nginx-pod clusterIP: None #将clusterIP设置为None即可创建headliness Service type: ClusterIP ports: - port: 80
targetPort: 80 # 创建service[rootmaster ~]# kubectl create -f service-headliness.yaml
service/service-headliness created
# 获取service,发现CLUSTER-IP未分配
[rootmaster ~]# kubectl get svc service-headliness -n dev -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service-headliness ClusterIP None none 80/TCP 11s appnginx-pod
# 查看service详情
[rootmaster ~]# kubectl describe svc service-headliness -n dev -o -wide
Name: service-headliness
Namespace: dev
Labels: none
Annotations: none
Selector: appnginx-pod
Type: ClusterIP
IP: None
Port: unset 80/TCP
TargetPort: 80/TCP
Endpoints: 10.244.1.39:80,10.244.1.40:80,10.244.2.33:80
Session Affinity: None
Events: none
# 查看域名的解析情况
[rootmaster ~]# kubectl exec -it pc-deployment-66cb59b984-8p84h -n dev /bin/sh/
# cat /etc/resolv.confnameserver
10.96.0.10
search dev.svc.cluster.local svc.cluster.local cluster.local
# 如果本机没有dig需要安装dig工具
[rootmaster ~]# yum -y install bind-utils
[rootmaster ~]# dig 10.96.0.10 service-headlilness.dev.svc.cluster.local
service-headliness.dev.svc.cluster.local. 30 IN A 10.244.1.40
service-headliness.dev.svc.cluster.local. 30 IN A 10.244.1.39
service-headliness.dev.svc.cluster.local. 30 IN A 10.244.2.33 Nodeport 类型的service 在之前的样例中创建的Service的ip地址只有集群内部才可以访问如果希望将Service暴露给集群外部使用那么就要使用到另外一种类型Service,称为NodePort类型。NodePort的工作原理其实就是将service的端口映射到Node的一个端口上然后就可以通过NodeIp:NodePort来访问service了。 创建service-nodeport.yaml
apiVersion: v1
kind: Service
metadata: name: service-nodeport namespace: dev
spec: selector: app: nginx-pod type: NodePort # Service类型 ports: - port: 80 nodePort: 30002 # 指定绑定的node的端口默认取值范围是30000-32767#如果不指定会默认分配 targetPort: 80