网站首页 > 技术文章 正文
kubernetes的service类型有:①:ClusterIP②:nodeport ③:LoadBalancer④:ExternalName,Ingress也可以进行服务暴露。
服务的serviceAffinity:会话亲和性:默认是随机调度的,根据iptables或者ipvs的规则调度会话,设置了这个之后就会把来自同一个客户端IP的访问请求,调度到同一个pod上。
查看service的类型:
kubectl explain service.spec.type
一般有四种类型:
ExternalName、ClusterIP、NodePort、LoadBalancer。
ExternalName是把服务service映射成DNS域名,也可以把外部服务映射到内部服务。它适合集群内部容器访问集群外部服务,它没有selector,也没有定义任何端口和endpoint。
服务service的FQDN全名是:
service_name.namespace_name.svc.cluster.local
当k8s集群内部访问ExternalName类型的服务名name时,就会把请求代理到externalName上。它适用于k8s集群内部容器访问外部资源。
ClusterIP:通过kubernetes集群内部IP暴露服务,服务只能在kubernetes集群内部访问,这也是默认的k8s的service type。
NodePort:通过每个node节点上的IP和静态端口暴露k8s集群的服务。通过请求<NodeIP>:<nodePort>可以把请求代理到kubernetes集群内部的pod上。代理的路径是:
Client客户端--->NodeIP:NodePort---->ServiceIP:ServicePort------->PodIP:ContainerPort
这里的客户端client可以是浏览器,也可以是其他的程序。
LoadBalancer服务类型:使用云服务商提供负载均衡器,可以向外部暴露服务。外部的负载均衡器LB可以路由到NodePort类型的服务和ClusterIP类型的服务。
查看service的端口类型,可以使用命令:
kubectl explain service.spec.ports
NodePort:宿主机上映射的端口。比如一个web应用需要被k8s集群之外的其他用户访问,那么需要配置type=NodePort,若配置NodePort=30001,那么其他机器就可以通过浏览器访问scheme://k8s集群中的任何一个节点IP:30001即可访问到这个服务。例如:http://192.168.116.168:30001。如果在kubernetes集群中部署mysql数据库,MySQL可能不需要被外界访问,只需被内部服务访问,那么就不需要设置NodePort。
Port:service的端口,这个是kubernetes集群内部服务可以访问的端口。
TargetPort:TargetPort是Pod上的端口。从port和nodeport上来的流量,经过kube-proxy流入到后端pod的TargetPort上,最后进入到容器。TargetPort与制作容器时暴露的端口一致,制作容器时使用Dockerfile中的EXPOSE暴露端口。比如官方的nginx容器暴露80端口。
通过yaml 文件部署pod:
Kubectl apply -f pod_name.yml
验证通过yaml 文件创建出来的deployment 控制器:
kubectl get deployment --all-namespaces
Deployment可管理Replicaset、Pod。创建deployment时,会管理replicaset,简称RS。
RS的名称是:deployment名-随机数。
Deployment创建pod时,pod的名字是由RS名称-随机数组成的。
举例来看:
Deployment名称:
kubectl get deployment --all-namespaces
查看到deployment名称为:coredns
Replicaset名称:
kubectl get replicasets --all-namespaces
查看到replicaset名称为:coredns-6d8c4cb4d,名称是deployment_name-随机数,并且可以查看到Replicas数值是2,代表容器的副本数是2。
Pod名称:
kubectl get pod --all-namespaces
查看到pod名称为:
coredns-6d8c4cb4d-67xb4
coredns-6d8c4cb4d-nz5ng
查看到pod名称是在replicaset的名称候加上了随机数。
鼓励的话语:眼界高时无物碍,心源开处有波清!
猜你喜欢
- 2024-10-12 Kong 优雅实现微服务网关鉴权,登录场景落地实战篇
- 2024-10-12 k8s安装与使用入门(k8s安装步骤)
- 2024-10-12 应用无损上下线(应用无损上下线怎么关闭)
- 2024-10-12 另一个Kubernetes(k8s)指南(kubernetesk8s怎么使用)
- 2024-10-12 Kubernetes 安全专家(CKS)必过心得
- 2024-10-12 深入理解K8S网络原理上(k8s网络解决方案)
- 2024-10-12 一次客户需求引发的K8S网络探究(基于客户需求)
- 2024-10-12 今天讲讲k8s的pod控制器及无状态和有状态
- 2024-10-12 k8s如何滚动升级应用(k8s升级组件方法)
- 2024-10-12 k8s基础知识之service服务(k8s serviceaccount作用)
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)