minikube 通过 ingress-nginx 配置dashboard支持域名访问

本文仅仅记录如何在minikube下启用ingress-nginx 这个ingress controller,并通过该这个方式暴露k8s的dashboard支持域名访问,虽然生产环境没有什么具体的作用,仅供学习k8s使用。

安装ingress-nginx其实是一个很简单的事情,通过

minikube addons enable ingress 

但是由于中众所周知周知的原因,k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1 k8s.gcr.io/ingress-nginx/controller:v1.0.4 这两个镜像在国内无法下载到,这就会导致启动失败。

kubctrl get pod -A 

可以看到有三个相关pod

ingress-nginx-admission-create--1-8v79c
ingress-nginx-admission-patch--1-ll9qs 
ingress-nginx-controller-5f66978484-mmn74  

由于镜像的加载失败而编排失败。ingress-nginx-controller-5f66978484-mmn74 是由ingress-nginx-controller 这个deployment 编排部署的,我们可以通过

    kubctrl edit deployment ingress-nginx-controller 

将镜像修改到可以拉到镜像,但是其实这样是不能成功的,因为ingress-nginx-admission-create--1-8v79c ingress-nginx-admission-patch--1-ll9qs 这两个pod需要被创建后才能使得ingress-nginx-controller-5f66978484-mmn74 的编排成功而ingress-nginx-admission 是通过job.batch/ingress-nginx-admission-create 这个job create的,由于job的image字段是不可以修改的。因此这是不可以的。

那自然想到通过

minikube image load 

来做,事先通过科学上网docker pull到k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1 k8s.gcr.io/ingress-nginx/controller:v1.0.4 后,docker save到文件,下载后导入。

本以为可以成功,事实上导入是没有问题,但是当重新enable addons 后依旧会尝试去拉去k8s.gcr.io/ingress-nginx/controller:v1.0.4 等镜像并比较hash,还是失败,看来只有对minikube设置代理了

minikube ssh

进入后其实minikube内的docker,问题也就转变为docker 的代理设置,根据官方文档,以下做法可以达成目的

sudo mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf

输入如下内容

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"

重启docker

 sudo systemctl daemon-reload
 sudo systemctl restart docker

如此后,docker pull可以正常拉到k8s.gcr.io/ingress-nginx/controller:v1.0.4

那如何证明成功呢?首先再次运行


    minikube addons enable ingress 

后编写如下ingress用于暴露k8s dashboard

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: kubernetes-dashboard
      namespace: kubernetes-dashboard
    spec:
      rules:
      - host: dashboard.com
        http:
          paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: kubernetes-dashboard
                port: 
                  number: 80

后通过

minikube servcie list 
#可以看到  ingress-nginx 被绑定在一个ip地址上,如

        ingress-nginx        | ingress-nginx-controller           | http/80      | http://192.168.52.6:32162 |
|                      |                                    | https/443    | http://192.168.52.6:30106 

只要将 dashboard.com 通过/etc/hosts 制定为192.168.52.6就可以通过浏览器 访问dashboard.com打开k8s dashboard

Lokie博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本博客使用免费开源的 laravel-bjyblog v5.5.1.1 搭建 © 2014-2018 lokie.wang 版权所有 ICP证:沪ICP备18016993号
  • 联系邮箱:kitche1985@hotmail.com