gpt4 book ai didi

azure - 具有特定端点 (DNS) 的 kubernetes 服务发现

转载 作者:行者123 更新时间:2023-12-02 12:19:55 27 4
gpt4 key购买 nike

我正在 Azure 上使用 AKS 群集。我正在尝试使用 DNS ( http://my-api.default.svc.cluster.local:3000/ ) 发现服务,但是它不起作用(无法访问此站点)。使用服务 IP 端点,一切工作正常。

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-api
labels:
app: my-api
spec:
replicas: 1
selector:
matchLabels:
app: my-api
template:
metadata:
labels:
app: my-api
spec:
containers:
- name: my-api
image: test.azurecr.io/my-api:latest
ports:
- containerPort: 3000
imagePullSecrets:
- name: testsecret
---
apiVersion: v1
kind: Service
metadata:
name: my-api
spec:
selector:
app: my-api
ports:
- protocol: TCP
port: 3000
targetPort: 3000

kubectl describe services kube-dns --namespace kube-system

Name:              kube-dns
Namespace: kube-system
Labels: addonmanager.kubernetes.io/mode=Reconcile
k8s-app=kube-dns
kubernetes.io/cluster-service=true
kubernetes.io/name=KubeDNS
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"addonmanager.kubernetes.io/mode":"Reconcile","k8s-app":"kube-dns","kubernet...
Selector: k8s-app=kube-dns
Type: ClusterIP
IP: 10.10.110.110
Port: dns 53/UDP
TargetPort: 53/UDP
Endpoints: 10.10.100.54:53,10.10.100.64:53
Port: dns-tcp 53/TCP
TargetPort: 53/TCP
Endpoints: 10.10.100.54:53,10.10.100.64:53
Session Affinity: None
Events: <none>

kubectl describe svc my-api

Name:              my-api
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-api","namespace":"default"},"spec":{"ports":[{"port":3000,"protocol":...
Selector: app=my-api
Type: ClusterIP
IP: 10.10.110.104
Port: <unset> 3000/TCP
TargetPort: 3000/TCP
Endpoints: 10.10.100.42:3000
Session Affinity: None
Events: <none>

来自第二个 POD

kubectl exec -it second-pod /bin/bash
curl my-api.default.svc.cluster.local:3000
Response: {"value":"Hello world2"}

第二个 POD 网站正在运行,该网站使用相同的端点,但未连接到服务。

enter image description here

最佳答案

修复了 yaml 文件的缩进,我能够成功启动部署和服务。 DNS 解析也运行良好。

差异:

  • 固定缩进
  • 使用 test1 命名空间而不是 default
  • 使用容器端口 80 而不是 3000
  • 使用了我的图片

部署:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
app: my-api
name: my-api
namespace: test1
spec:
replicas: 1
selector:
matchLabels:
app: my-api
template:
metadata:
labels:
app: my-api
spec:
containers:
- image: leodotcloud/swiss-army-knife
name: my-api
ports:
- containerPort: 80
protocol: TCP

服务:

apiVersion: v1
kind: Service
metadata:
name: my-api
namespace: test1
spec:
ports:
- port: 3000
protocol: TCP
targetPort: 80
selector:
app: my-api
type: ClusterIP

second-pod-test

调试步骤:

  • 在两个 kube-dns 容器内安装 tcpdump 并开始捕获 DNS 流量(使用来自第二个 Pod IP 的过滤器)
  • 从第二个 Pod 内部,使用 FQDN 运行 curldig 命令。
  • 检查 DNS 查询数据包是否到达 kube-dns 容器。
  • 如果没有,请检查网络问题。
  • 如果 DNS 解析正常,则在应用程序容器内启动 tcpdump 并检查 curl 数据包是否到达容器。
  • 检查数据包的源和目标 IP 地址。
  • 检查主机上的 iptables 规则。
  • 检查 sysctl 设置。

关于azure - 具有特定端点 (DNS) 的 kubernetes 服务发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52225431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com