k8s创建service,令外部端口访问

一、pod IP
  1. 每个pod 都有自己的 IP 地址,存在于 pod scope。 当 controller 用新 Pod 替代发生故障的 Pod 时,新 Pod 会分配到新的 IP 地址。
  2. 一个Pod 的 容器们containers 共享 networknamespaces, 包括IP 地址。这意味着在一个pod 里的容器们能够通过 localhost  访问彼此的端口。
 
二、service的三种端口
  Service 从逻辑上代表了一组 Pod,具体是哪些 Pod 则是由 label 来挑选。Service 有自己 IP,而且这个 IP 是不变的。
  1. port是 service暴露在cluster ip上的端口,:port 是提供给集群 内部 客户访问service的入口。
  2. nodePort 是k8s提供给集群外部客户访问service入口的一种方式,:nodePort 是提供给集群 外部 客户访问service的入口。
  3. targetPort是pod上的端口,从port和nodePort上到来的数据最终经过kube-proxy流入到后端pod的targetPort上 进入容器
  4. port、nodePort总结: port和nodePort都是service的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod上的容器内。
 
三、如何部署服务
  1. 创建自己的对象(可能是部署deployment、ReplicationController、FrameworkController等),可以设定副本数
  2. 创建Service对象,作为入口地址来对上一步创建好的对象进行访问。将三种端口关联起来了。
apiVersion: v1
 
kind: Service
metadata:
  name: myweb
spec:
  ports:
  - name: myweb-svc //端口名称,Service是必须指定端口名称的
    port: 8080 //Service的端口号
    targetPort: 8080 //容器暴露的端口号
    nodePort: 31111 //node的真实端口号
  selector:
     app: myweb //Service选择了标签为app: myweb的pod,因此第一步创建的pod要与此处一样
   type: NodePort
把上述配置写进myweb-svc.yaml文件,通过kubectl create -f  myweb-svc.yaml 创建service对象
四、访问服务
  1. 集群内部访问服务
$  kubectl get svc | grep myweb
或$ kubectl describe svc myweb 查看clusterIP+port
然后$ telnet clusterIP port
      2. 集群外部访问服务
选择副本中的一个pod,$  kubectl get pods | grep myweb
然后 $ kubectl describe pod <pod_name> 查看node ip
node ip + :nodePort在外部访问服务
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s部署redis集群之后,我们需要对其进行外部访问的配置。首先,我们需要使用Service对象将Redis集群暴露给集群外部。这需要我们创建一个新的Service类型对象,将其暴露为NodePort或LoadBalancer类型。NodePort是一种将端口绑定到每个节点的方式,而LoadBalancer是一种将端口绑定到云提供商的负载平衡器的方式。 对于NodePort类型的Service,我们需要使用 kubectl expose 命创建一个新的Service,并配置其为NodePort类型,其命如下: kubectl expose rc redis-cluster --name=redis-cluster-service --port=6379 --target-port=6379 --type=NodePort 这会在Redis集群中创建一个新的Service,将其命名为redis-cluster-service,并将其类型设置为NodePort。此外,我们需要将目标端口与6379端口绑定,以确保外部客户端可以使用正确的端口访问Redis集群。 现在,我们可以使用 kubectl get service获取到该服务的详细信息,其中包括其IP地址和端口号,我们可以使用此信息来访问Redis集群。 如果需要使用LoadBalancer类型的Service,则需要配置一个外部负载均衡器,并将其绑定到Redis集群的Service上。这样,我们就可以在Redis集群和其外部客户端之间实现负载均衡,并高效地处理客户端流量。 总之,在k8s部署Redis集群之后,我们需要配置外部访问选项,以确保我们的Redis集群能够满足外部客户端的请求。通过创建Service对象并配置其类型,我们可以将Redis集群暴露给宿主机上的客户端,或者通过外部负载均衡器将其暴露给公共云上的客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值