私信  •  关注

Rico

Rico 最近创建的主题
Rico 最近回复了
6 年前
回复了 Rico 创建的主题 » 如何在Kubernetes中配置Ingress nginx?

我不确定您看到了什么错误,发布它们会很有帮助,但从这开始是正确的:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

如中所述 main documentation page 用于nginx入口控制器。如果您使用的是数字海洋,您只需按照 NodePort/Bare-metal instructions 因为目前还没有对数字海洋负载均衡器的支持。

之后,您要检查您的nginx入口控制器是否正在运行:

$ kubectl -n ingress-nginx get pods
NAME                                        READY     STATUS    RESTARTS   AGE
default-http-backend-xxxxxxxxxx-xxxxx       1/1       Running   0          1h
nginx-ingress-controller-xxxxxxxxxx-xxxxx   1/1       Running   0          1h

您还可以检查日志:

$ kubectl -n ingress-nginx nginx-ingress-controller-xxxxxxxxxx-xxxxx

然后您可以创建一个 Ingress 和A Service 那是为入口服务的。

然后,您可以使用 kubernetes.io/ingress.class: "nginx" 注释。

您正在使用 Hyperkit Minikube驱动程序使用 /usr/local/bin/hyperkit 命令行(实际上它使用 xhyve 管理程序)。这么简单:

$ ps -Af | grep hyperkit
    0  9445     1   0  1:07PM ttys002    1:45.27 /usr/local/bin/hyperkit -A -u -F /Users/youruser/.minikube/machines/minikube/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-net -U 2caa5ca9-d55c-11e8-92a0-186590def269 -s 2:0,virtio-blk,/Users/youruser/.minikube/machines/minikube/minikube.rawdisk -s 3,ahci-cd,/Users/youruser/.minikube/machines/minikube/boot2docker.iso -s 4,virtio-rnd -l com1,autopty=/Users/youruser/.minikube/machines/minikube/tty,log=/Users/youruser/.minikube/machines/minikube/console-ring -f kexec,/Users/youruser/.minikube/machines/minikube/bzimage,/Users/youruser/.minikube/machines/minikube/initrd,earlyprintk=serial loglevel=3 user=docker console=ttyS0 console=tty0 noembed nomodeset norestore waitusb=10 systemd.legacy_systemd_cgroup_controller=yes base host=minikube

将告诉您正在运行多少个Hyperkit进程/vm。嗯, minikube only supports one 但是如果你有,你可以再要一个 Docker for Mac 安装。

那么,如果你遵循这一点: How to access the VM created by docker's HyperKit? . 您可以连接到VM AN,查看内部运行的内容:

$ sudo screen /Users/youruser/.minikube/machines/minikube/tty
Welcome to minikube
minikube login: root
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

# docker ps
...  <== shows a bunch of K8s containers
6 年前
回复了 Rico 创建的主题 » elasticsearch pod在没有日志的init状态下失败

对。有办法。您可以通过ssh进入运行pods的机器,并且假设您使用docker,您可以运行:

docker ps -a # Shows all the Exited containers (some of those, part of your pod)

然后:

docker logs <container-id-of-your-exited-elasticsearch-container>

如果您使用 CRIO Containerd 它就像是

crictl logs <container-id>
6 年前
回复了 Rico 创建的主题 » Kubernetes入口nginx不匹配子路径

你需要使用 /* 在路径的末尾:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
        - path: /one/*
          backend:
            serviceName: test-one-backend
            servicePort: 80
        - path: /two
          backend:
            serviceName: test-two-backend
            servicePort: 80

不是真的 documented widely as of today 但本质上 path 翻译成 location {} 在nginx.conf中阻塞

6 年前
回复了 Rico 创建的主题 » nginx入口控制器隐藏nginx版本

如果你看 configs 你会看到的 server_tokens 可以是在 http, server, location 你的上下文 nginx.conf . 因此,在nginx入口控制器上,它实际上取决于您想在哪里添加该设置(以及如何添加):

6 年前
回复了 Rico 创建的主题 » Kubernetes nginx通过301而不是308进入HTTP到HTTPS重定向?

我猜是tls重定向隐藏了 nginx.ingress.kubernetes.io/permanent-redirect-code 注释。

你可以改变 ConfigMap 为了你 nginx-configuration 所以默认的重定向是301。这是您的nginx入口控制器用于nginx本身的配置。这个 组态图 如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  name: nginx-configuration
  namespace: ingress-nginx
data:
  use-proxy-protocol: "true"
  http-redirect-code: "301"

你可以找到更多关于 组态图 选项 here . 请注意,如果您更改 组态图 您必须重新启动 nginx-ingress-controller 豆荚。

你也可以把壳装进 nginx入口控制器 弹出并查看控制器创建的实际nginx配置:

kubectl -n ingress-nginx exec -it nginx-ingress-controller-xxxxxxxxxx-xxxxx bash
www-data@nginx-ingress-controller-xxxxxxxxx-xxxxx:/etc/nginx$ cat /etc/nginx/nginx.conf