在我只有一个虚拟机(centos 7.4,主机名kube-2.novalocal,ip 172.50.10.10
)之前,我同时安装了master和kubelet,并且可以通过172.50.10.10/uaa/login
访问我的入口。在集群内部,我使用ClusterIP,并将入口nginx部署为入口上的NodePort。由于它是重定向/重写,因此我通过避免省略端口将nodeport更改为80。服务网址为http://172.50.10.10/uaa/login
。而且效果很好。
现在我添加两个节点(kube-1.novalocal / 172.50.10.1和kube-3.novalocal / 172.50.10.4)。我可以看到kubernetes在kube-3.novalocal上部署了入口。而且它频繁重启,几乎每分钟都会重启一次。而且我也不知道入口服务网址。是http://kube-2.novalocal/uaa/login or http://kube-3.novalocal/uaa/login?
为什么这么频繁地重启?
我将所有相关的yaml文件,日志文件,控制台命令输出和仪表板信息放在这里。
[centos@kube-2 ingress]$ sudo kubectl get po
NAME READY STATUS RESTARTS AGE
gearbox-rack-api-gateway 1/1 Running 0 15h
gearbox-rack-config-server 1/1 Running 0 15h
gearbox-rack-eureka-server 1/1 Running 0 15h
gearbox-rack-rabbitmq 1/1 Running 0 15h
gearbox-rack-redis 1/1 Running 0 15h
gearbox-rack-uaa-service 1/1 Running 0 15h
gearbox-rack-zipkin-server 1/1 Running 0 15h
ingress-nginx-5c6d78668c-brlsv 1/1 Running 279 15h
nginx-default-backend-6647766887-nbwhl 1/1 Running 0 15h
在kube-3.novalocal(172.50.10.4)中访问入口网址:
[centos@kube-2 ingress]$ curl http://172.50.10.4/uaa/login
curl: (7) Failed connect to 172.50.10.4:80; Connection refused
ingress-nginx日志:
[centos@kube-2 ingress]$ sudo kubectl logs ingress-nginx-5c6d78668c-frb2r
-------------------------------------------------------------------------------
NGINX Ingress controller
Release: 0.15.0
Build: git-df61bd7
Repository: https://github.com/kubernetes/ingress-nginx
-------------------------------------------------------------------------------
W0703 02:16:35.966965 7 client_config.go:533] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0703 02:16:35.967483 7 main.go:158] Creating API client for https://10.96.0.1:443
Dashborad图像如下:
ingress-nginx-res.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host:
http:
paths:
- path: /
backend:
serviceName: gearbox-rack-api-gateway
servicePort: 5555
ingress-nginx-ctl.yaml
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
spec:
type: NodePort
selector:
app: ingress-nginx
ports:
- name: http
port: 80
nodePort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: ingress-nginx
spec:
replicas: 1
template:
metadata:
labels:
app: ingress-nginx
spec:
terminationGracePeriodSeconds: 60
serviceAccount: lb
containers:
- image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0
name: ingress-nginx
imagePullPolicy: Always
ports:
- name: http
containerPort: 80
protocol: TCP
- name: https
containerPort: 443
protocol: TCP
livenessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
args:
- /nginx-ingress-controller
- --default-backend-service=$(POD_NAMESPACE)/nginx-default-backend
kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
apiServerExtraArgs:
service-node-port-range: 80-32767
networking:
podSubnet: 192.168.0.0/16
kubernetesVersion: v1.10.3
featureGates:
CoreDNS: true
================================================ ==
Ingress-nginx控制器已更新为0.16.2,与以前相同的部署,ingress-nginx几乎每两分钟持续重启一次。
NAME READY STATUS RESTARTS AGE
ingress-nginx-59b74f9684-lgm2k 0/1 CrashLoopBackOff 9 20m 192.168.179.5 kube-3.novalocal
答案 0 :(得分:3)
使用NodePort假定您能够访问所有pod,因此您应该能够同时使用http://kube-2.novalocal/uaa/login和http://kube-3.novalocal/uaa/login。
您可以在此处找到有关NodePort的更多信息:https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types “ NodePort:在静态端口(NodePort)上的每个节点的IP上公开该服务。NodePort服务将路由到的ClusterIP服务是自动创建的。您可以通过以下请求从集群外部联系NodePort服务: 。”
关于您的ingress-nginx频繁重启:尝试将nginx控制器升级到最新版本,然后返回结果。您可以在这里找到它:https://github.com/kubernetes/ingress-nginx
另外,请看一下具有类似问题的本文:https://github.com/kubernetes/ingress-nginx/issues/2450
答案 1 :(得分:0)
根本原因可能是部署硬件环境。使用我的virtualbox,没有重新启动。当我使用基于openstack的公司vm时,ingress-nginx控制器始终会重新启动。