我所有的pod都在服务器上工作。
NAMESPACE NAME READY STATUS RESTARTS AGE
default user-api-66fc4fc9d-igqnj 3/3 Running 0 25s
ingress-nginx nginx-ingress-controller-5556bd698f-qgw8r 1/1 Running 0 12h
kube-system coredns-6955765f44-4xnhh 1/1 Running 1 40h
kube-system coredns-6955765f44-6tb8p 1/1 Running 1 40h
kube-system etcd-izbp1dyjigsfwmw0dtl85gz 1/1 Running 1 40h
kube-system kube-apiserver-izbp1dyjigsfwmw0dtl85gz 1/1 Running 1 40h
kube-system kube-controller-manager-izbp1dyjigsfwmw0dtl85gz 1/1 Running 1 40h
kube-system kube-flannel-ds-amd64-8b5pc 1/1 Running 0 40h
kube-system kube-flannel-ds-amd64-jq4kl 1/1 Running 1 40h
kube-system kube-proxy-9zx7c 1/1 Running 1 40h
kube-system kube-proxy-lh55j 1/1 Running 0 40h
kube-system kube-scheduler-izbp1dyjigsfwmw0dtl85gz 1/1 Running 1 40h我创建的入口。
NAME HOSTS ADDRESS PORTS AGE
app-ingress example.com 80 5h16m我为我的单个部署创建了ClusterIP服务,并使用带有资源文件的loadBalance ingress-nginx controller来公开内部服务。相关代码如下所示。
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-api
spec:
replicas: 1
selector:
matchLabels:
app: user-api
strategy: {}
template:
metadata:
labels:
app: user-api
spec:
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
containers:
- name: user-api
image: doumeyi/user-api-amd64:1.0
ports:
- name: user-api
containerPort: 3000
resources: {}
---
apiVersion: v1
kind: Service
metadata:
name: user-api
spec:
selector:
app: user-api
ports:
- name: user-api
port: 3000
targetPort: 3000
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /user-api
backend:
serviceName: user-api
servicePort: 3000ingress nginx服务似乎有问题,外部ip总是挂起。
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx ingress-nginx LoadBalancer 10.104.176.152 <pending> 80:31612/TCP,443:30097/TCP 13h发布于 2020-02-06 17:59:52
发布于 2020-02-06 18:12:07
入口中指定的80端口为kubernetes服务端口。将不会有任何进程在该端口上侦听。在pod spec中指定的容器端口上应该有一个监听进程。它将位于部署pod的节点中。另外,对于您在nginx入口控制器本身的部署中指定的端口80和443,应该有nginx进程侦听,但您需要在部署nginx控制器pod的节点中进行检查。
发布于 2020-02-20 19:31:23
请更改服务定义并指定正确的端口:
apiVersion: v1
kind: Service
metadata:
name: user-api
spec:
selector:
app: user-api
ports:
- name: user-api
- port: 3000
targetPort: 80
type: LoadBalancer来自外部负载均衡的流量指向后端Pod。云提供商决定如何实现负载平衡。
对于LoadBalancer类型的服务,如果定义了多个端口,则所有端口必须具有相同的协议,并且该协议必须是TCP、UDP和SCTP之一。
一些云提供商允许您指定loadBalancerIP。在这些情况下,将使用用户指定的loadBalancerIP创建负载均衡器。如果未指定loadBalancerIP字段,则使用临时IP地址设置loadBalancer。如果您指定了loadBalancerIP,但您的云提供商不支持该功能,则会忽略您设置的loadbalancerIP字段。
此外,如果您正在使用nginx入口控制器,请从部署配置文件中删除,然后应用更改( $ kubectl apply -f your-deployment-conf-file.yaml)。
更多信息可以在这里找到:nginx-troubleshooting,nginx-ingress。
https://stackoverflow.com/questions/60091010
复制相似问题