通过ArgoCD部署到K8s的应用与Ingress为何卡在Progressing状态?
问题描述
我在WSL2中单独运行Docker引擎(未使用Windows Docker Desktop),通过kind创建了Kubernetes集群,集群内部署了ArgoCD服务器。我构建了一个监听8083端口的Demo应用,访问localhost:8083时返回"Hello, World"消息。
我通过以下配置将应用部署到ArgoCD:
ArgoCD应用配置(demo-app-chart.yaml)
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: demo-app namespace: argocd spec: source: path: manifests repoURL: (存储YAML脚本的GitHub仓库地址) targetRevision: HEAD destination: server: 'https://kubernetes.default.svc' namespace: default # kube-system project: default syncPolicy: automated: prune: true
仓库中的K8s资源配置
Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: demo-app spec: replicas: 2 selector: matchLabels: app: demo-app template: metadata: labels: app: demo-app spec: containers: - image: (Docker Hub中的镜像路径) name: demo-app ports: - containerPort: 8083
Service
apiVersion: v1 kind: Service metadata: name: demo-app-service spec: ports: - port: 8083 protocol: TCP targetPort: 8083 selector: app: demo-app type: NodePort
Ingress
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-app-ingress spec: rules: - host: kind.cluster.internal http: paths: - path: / pathType: Prefix backend: service: name: demo-app-service port: number: 8083
遇到的问题
应用已部署,Service、Deployment和Pods的同步及健康状态均正常,但Application和Ingress资源同步状态正常,健康状态卡在"Progressing"。
我尝试获取集群IP:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 03f01542d6e5 kindest/node:v1.27.3 "/usr/local/bin/entr…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8080->8080/tcp, 127.0.0.1:35235->6443/tcp my-super-cluster-control-plane
$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-super-cluster-control-plane 172.18.0.2
并将集群IP添加到WSL的/etc/hosts文件:
172.18.0.2 kind.cluster.internal
但状态仍无变化。
服务状态如下:
$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE demo-app-service NodePort 10.96.110.156 <none> 8083:31707/TCP 43m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 86m
更新信息
查看Ingress详情时发现没有"Address",仅显示端口80:
$ kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE demo-app-ingress <none> kind.cluster.internal 80 8h
$ kubectl describe ingress demo-app-ingress Name: demo-app-ingress Labels: app.kubernetes.io/instance=demo-app Namespace: default Address: Ingress Class: <none> Default backend: <default> Rules: Host Path Backends ---- ---- -------- kind.cluster.internal / demo-app-service:8083 (10.244.0.2:8083,10.244.0.8:8083) Annotations: <none> Events: <none>
我认为需要进行路由映射,但不知道具体操作方法,寻求帮助。
内容的提问来源于stack exchange,提问作者Mauricio Ramírez
相关产品推荐
相关产品推荐

