测验:Service 与网络
Service、Deployment、Pod都正常,但是无法连接。你应该先检查什么?
- 来自 kube-proxy pod 的日志
- CoreDNS 核心文件设置和上游指定
- NodePort 端口范围设置
- 服务选择器与 Pod 标签匹配,并且 Pod 已就绪(即端点具有 IP)。
在根本没有安装kube-proxy,换成Cilium的eBPF的集群中,为什么某个节点的iptables KUBE-chain是0?
- 因为该节点上没有安装 iptables 本身,
- kube-proxy DaemonSet 后来被删除,只清理了规则。
- 这是因为服务的前端和后端进入eBPF哈希图,内核搜索该图并改变目的地。
- 我还没有创建任何服务。
为什么开启 kubeProxyReplacement 时必须指定 k8sServiceHost 和 k8sServicePort?
- 这是因为Cilium本身就是创建Kubernetes服务VIP的实体,所以VIP在启动之前是无法使用的。
- 这是因为 Cilium 安装了 kube-proxy。
- 因为apiserver证书SAN中没有ClusterIP。
- 这是因为CoreDNS还没有出现,无法解析名称。
clusterIP 设置为 None 的无头服务的 DNS 行为是什么?
- 服务名称仍然只能解析为一个虚拟 IP 地址
- 根本没有创建 DNS 记录
- 只能通过 NodePort 访问
- 服务名称直接解析为后端 Pod IP,与 StatefulSet 一起使用时,还会创建特定于 Pod 的 DNS 名称。
在NetworkPolicy中,将from项分成两部分分别使用namespaceSelector和podSelector,以及在一项中一起使用它们有什么区别?
- 两者含义相同,只是表示法不同。
- 分开时为OR(两者仅其一正确),在一项中一起使用时为AND(两者都正确则可以)。
- AND 分开时,OR 在一项中一起使用时
- 如果存在 namespaceSelector,则 podSelector 始终被忽略
v1.33 弃用 Endpoints API 后,需要读取后端列表的代码应该做什么?
- 更改为使用 kubernetes.io/service-name 标签查找 EndpointSlice。
- 改为读取服务的 externalIPs 字段
- 解析kube-proxy的metrics端点
- 读取Ingress的状态字段