gpt4 book ai didi

kubernetes - Kubernetes:服务 list 未提供访问应用程序的端点

转载 作者:行者123 更新时间:2023-12-02 11:36:25 24 4
gpt4 key购买 nike

这个yaml试图在k8s中部署一个简单的Arangodb架构,我知道有ArangoDB的运算符,但这是一个简单的PoC,用于了解k8s的各个部分并使用其他应用程序迭代此db。

问题是此YAML文件可以正确执行,但是我无法连接任何IP:PORT,但是当我在本地执行该docker镜像时,它可以工作。

# create: kubectl apply -f ./arango.yaml
# delete: kubectl delete -f ./arango.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: nms
name: arangodb-deployment
spec:
replicas: 1
selector:
matchLabels:
app: arangodb-pod
template:
metadata:
labels:
app: arangodb-pod
spec:
containers:
- name: arangodb
image: arangodb/arangodb:3.5.3
env:
- name: ARANGO_ROOT_PASSWORD
value: "pass"
ports:
- name: http
containerPort: 8529
protocol: TCP
resources:
limits:
cpu: 100m
memory: 128Mi
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
namespace: nms
name: arangodb-svc
spec:
type: LoadBalancer
selector:
app: arangodb-pod
ports:
- targetPort: 8529
protocol: TCP
port: 8529
targetPort: http
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: nms
name: arango-storage
labels:
app: arangodb-pod
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi

说明似乎很清楚:
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
arangodb-svc LoadBalancer 10.0.150.245 51.130.11.13 8529/TCP 14m

我正在从AKS执行 kubectl apply -f arango.yaml,但是无法访问任何 IP:8529。有什么建议吗?

我想模拟这些命令:
docker run -p 8529:8529 -e ARANGO_ROOT_PASSWORD=pass -d --name arangodb-instance arangodb/arangodb:3.5.3
docker start arangodb-instance

最佳答案

您必须在VNet配置中允许NSG级别的NodePort 31098并将该NSG规则附加到AKS群集。

此外,请尝试使用注释帮助中所做的更改来更新服务 list 。

  - targetPort: 8529
protocol: TCP
port: 8529
targetPort: http --< **Its completely wrong field, the manifest wont be parsed.**

上面的 list 是错误的,对于NodePort(--service-node-port-range = 30000-32767), list 应该看起来像这样:
  spec:
type: NodePort
selector:
app: arangodb-pod
ports:
# By default and for convenience, the `targetPort` is set to the same value as the `port` field.
- name: http
port: 8529
targetPort: 8529
# Optional field
nodePort: 31044

您可以从AKS外部通过 public-NODE-IP:NodePort 连接。

对于服务类型的loadbalancer, list 应如下所示:
  spec:
type: LoadBalancer
selector:
app: arangodb-pod
ports:
- name: http
protocol: TCP
port: 8529
targetPort: 8529

对于LoadBalancer,您可以连接 LoadBalancer-External-IP:external-port

但是,在以上两种情况下,都应该有NSG白名单规则。无论您从何处访问本地计算机,都应将其本地IP或该计算机的IP列入白名单。

关于kubernetes - Kubernetes:服务 list 未提供访问应用程序的端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61773840/

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