《kubernetes in Action》(中文版)读书笔记 1
1. 集群内如果使用服务
K8s 可以通过创建 service 的方式,提供固定的 IP 和端口,当服务不受经常变动的 pod 的影响。
k8s 可以根据 service 的 manifest 来创建新的服务,可以通过以下命令来访问service,
1
kubectl exec [podName] --curl -a [url]
收到请求的 service 会从下辖的 pod 中用负载均衡的方式随机调一个pod 对请求进行响应。
- 配置
sessionAffinity
为ClientIp
可以让特定客户端的请求每次都指向同一个 pod。 - service 是在 TCP 和 UDP 层进行工作的,所以不涉及 HTTP 协议中的 cookie 概念。
- service mainifest:指明 name:http;port:80;targetPort:8080(Pod 上的端口)。
- 也可以是 targetPort:someAliaName,然后再 pod 的 manifest 中指明 name:someAliaName,containerPort:8080.实现了解耦。
- 服务发现:
- 方法一:环境变量。先有 service后有 pod 时,pod 可以取到环境变量中的 serviceIp和 port 等信息。但若先有 pod 后有 service,信息就很难取到。
- 方法二:DNS 服务。k8s 中设置一个 DNS 服务的 pod,如此一来,—curl 时不再使用ip 地址的 url,而是使用 FQDN(全限定域名),请求先查 DNS 服务,然后就能找到服务了,再然后就找到真正工作的 pod 了。
- 配置