|      1prodan      2022-06-29 16:22:55 +08:00 service 本质上是一个负载均衡,据我所知是做不到指定用户访问指定的 pod ,你应该从你的程序设计上解决。 | 
|  |      2hwdef      2022-06-29 16:24:10 +08:00 headless service | 
|  |      3offswitch      2022-06-29 16:25:18 +08:00 你需要试试 istio ,istio 可以实现你需要的需求。 | 
|  |      5Tinet      2022-06-29 17:14:45 +08:00  1 两个步骤: 1. 在集群外解析 headless service 域名地址 2. 将 clusterIP 与集群外网络打通 | 
|      8April5      2022-06-29 17:44:15 +08:00 前置一个网关,通过 zk 或 etcd 维护服务 B ,网关订阅服务 B 的地址信息,网关将指定消息代理到相应的 B | 
|  |      9aragakiyuii      2022-06-29 18:08:06 +08:00 via iPhone 代理到 {podName}.{headlessServiceName} | 
|      10buffzty      2022-06-29 19:35:57 +08:00 mysql-0.mysql.svc.cluster.local:3306 | 
|  |      11Jiki      2022-06-30 00:12:00 +08:00 via iPhone 最近也遇到这个问题,关注一下 | 
|  |      12ydongd OP @aragakiyuii @buffzty 我用的 docker 自带的 k8s , 好像代理不了。之前用 minikube 普通的 service 都转发不出来。用的 mac 。 可能新手就需要踩这些坑吧 | 
|  |      14aragakiyuii      2022-06-30 10:08:08 +08:00 可以在集群里面部署一个 nginx ,配置好 TCP 转发规则,转发至 {podName}.{headlessServiceName},然后可以通过 hostPort 或者 nodePort 形式将 nginx 暴露到集群外部 | 
|      15qianhun      2022-06-30 11:13:53 +08:00 用 statefulset 模式,然后通过脚本获取主机名,并修改应用服务的端口,在通过 hostNetwork 映射到宿主机上 | 
|  |      16ydongd OP @qianhun 不知到啥原因 这种方式也不行 apiVersion: v1 kind: Pod metadata: name: server-pod spec: hostNetwork: true dnsPolicy: ClusterFirstWithHostNet containers: - name: server image: yddeng/server:1.1 command: ["./server"] args: ["server-0","127.0.0.1:9563"] | 
|      17qianhun      2022-06-30 13:10:47 +08:00 用 statefulset 控制器,启动一个 initcontainer ,写一个 shell 脚本,判断主机名,如果是 server-0 ,port 为 9563 ,如果是 server-1 ,port 为 9564 ,然后把具体的执行命令输出到启动脚本里,给你的 server pod 执行,不要在 args 里面写参数,在 args 里写参数只能启动一个 pod | 
|      19qianhun      2022-06-30 14:22:38 +08:00 不能访问,有什么报错么 1.看看 pod 是否运行正常,日志有报错没有 2.到宿主机上看看端口启动了没 3.防火墙是否关闭 | 
|      21yyttrr      2022-07-01 17:17:47 +08:00 研究一下 ingress ,集群入口有很多种 | 
|      22lostsquirrelX      2022-07-13 16:29:22 +08:00 请描述一个你想要做什么,而不是你是怎么做的 |