kuberneets 1.17 安装 dashboard nginx-ingress

一、首先安装dashboard

https://github.com/kubernetes/dashboard

需要下载的yaml文件 https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml可以进行一些修改首先是HTTPS的修改部分
containers:
        - name: kubernetes-dashboard
          image: kubernetesui/dashboard:v2.0.0-beta8
          imagePullPolicy: Always
          ports:
            - containerPort: 8443
              protocol: TCP
          args:
            - --auto-generate-certificates
            - --namespace=kubernetes-dashboard
            - --metrics-provider=none
            - --api-log-level=DEBUG
            - --v=10

  

HTTP的修改部分

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 80
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

  


containers:
        - name: kubernetes-dashboard
          image: kubernetesui/dashboard:v2.0.0-beta8
          imagePullPolicy: Always
          ports:
            - containerPort: 8443
              protocol: TCP
          args:
            #- --auto-generate-certificates
            #- --namespace=kubernetes-dashboard
            - --enable-insecure-login=true
            - --insecure-port=8443
            - --metrics-provider=none
            - --namespace=kubernetes-dashboard
            - --enable-skip-login=true

用kubectl apply -f 提交修改后的文件

查看相关内容是否都已经启动成功

kubectl get all -n kubernetes-dashboard

二、下边开始安装ingress

首先参考

https://kubernetes.github.io/ingress-nginx/deploy/#prerequisite-generic-deployment-command

主要使用的文件就是

https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.26.2/deploy/static/mandatory.yaml

由于不想使用 nodeport 的service暴露服务,选择在ingress-controller的机器上暴露端口
 spec:
      # wait up to five minutes for the drain of connections
      terminationGracePeriodSeconds: 300
      serviceAccountName: nginx-ingress-serviceaccount
      nodeSelector:
        kubernetes.io/os: linux
        kubernetes.io/hostname: xxx.xxx.xxx.xxx #nginx启动所在的机器
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      containers:
        - name: nginx-ingress-controller

 

配置service文件 由于我是bare-metal的 所以参考地址 https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal

https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.26.2/deploy/static/provider/baremetal/service-nodeport.yaml 进行了一些修改
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  #type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

 

上边说过不用Nodeport方式,所以改了一下

用kubectl apply -f 提交这两个文件

查看启动情况

kubectl get all -n ingress-nginx

三、 开始为dashboard配置ingress的rule

首先是HTTPS的配置

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: k8s-dashboard
  namespace: kubernetes-dashboard
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    #nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  #tls:
  #- secretName: kubernetes-dashboard-certs
  rules:
  - http:
      paths:
      #- path: /dashboard(/|$)(.*)
      - path: /dashboard/(.*)
        backend:
          serviceName: kubernetes-dashboard
          servicePort: 443

  注意上边的 annotations

其次是 HTTP的

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: k8s-dashboard
  namespace: kubernetes-dashboard
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: kubernetes-dashboard
          servicePort: 80

  

HTTP的方式我直接使用 / 作为路径, HTTPS使用/dashboard/ 作为路径

访问时使用在 ingress那绑定的机器 使用80或者443端口来访问 记得后边一定要有 / , 比如 (HTTP的配置) http://xxx.xxx.xxx.xxx/  ,

(HTTPS的配置) https://xxx.xxx.xxx.xxx/dashboard/

四、为dashboard创建用户

可以参考 https://github.com/kubernetes/dashboard#create-an-authentication-token-rbac

可以参考 https://my.oschina.net/u/2306127/blog/1930169?from=timeline

apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard
  namespace: kube-system

---

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dashboard
subjects:
  - kind: ServiceAccount
    name: dashboard
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

然后执行安装(所建立的账号为dashboard):

kubectl create -f dashboard-rbac.yaml

  

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep dashboard-token | awk ‘{print $1}‘)

参考地址

https://www.servicemesher.com/blog/general-kubernetes-dashboard/

原文地址:https://www.cnblogs.com/xuchenCN/p/12169784.html

时间: 2024-10-08 04:40:44

kuberneets 1.17 安装 dashboard nginx-ingress的相关文章

Kubernetes使用Nginx Ingress暴露Dashboard

Kubernetes使用Nginx Ingress暴露Dashboard [TOC] 1. 环境说明 可用的kubernetes集群 可用的nginx ingress controller 可用的dashboard 关于kubernetes.dashboard和nginx ingress在前面文章中,已有介绍. <centos7使用kubeadm安装kubernetes 1.11版本多主高可用> <kubernetes 1.11配置使用nginx ingress> 也可以使用hel

[系统集成] 用 Kubernetes Nginx Ingress 实现 HTTP 服务发布与负载均衡

用户在 Kubernetes 上部署的服务一般运行于私有网络,Pod和Service 提供了 hostPort,NodePort等参数用于暴露这些服务端口到K8S节点上,供使用者访问.这样的方法有明显缺点: 1)容易占用过多的主机端口: 2)服务端口暴露到多台主机会增加防火墙和安全配置的难度 3)默认的hostPort,NodePort方式没有负载均衡的作用 K8S的 Ingress 资源提供了另一种服务暴露的方法,它可以获取各个服务的状态,传递给nginx等工具进行配置修改.重新加载等工作,实

k8s安装dashboard(未解决)

第一种,用helm安装 helm repo update Hang tight while we grab the latest from your chart repositories... ...Skip local chart repository ...Successfully got an update from the "stable" chart repository Update Complete. [root@k8s-master templates]# helm r

Centos安装FastDFS+Nginx(一天时间搞定)

最近在研究和使用Fastdfs,别人搭的环境,终究是别人的,绝知此事要躬行~躬行啊~      下面的脚本主要参考了官方的INSTALL文件,这个是比较权威的,部分地方和实际情况不一致.比如配置文件的名字,Fastdfs的安装位置. 一.下载    https://github.com/happyfish100/fastdfs fastdfs-5.05.zip https://github.com/happyfish100/libfastcommon libfastcommon-1.0.7.zi

FastDFS安装与nginx反向代理配置

操作系统 Ubuntu Server nginx相关软件 nginx-1.10.1 http://nginx.org/en/download.html nginx清除缓存模块 ngx_cache_purge-2.3 http://labs.frickle.com/nginx_ngx_cache_purge/ pcre-8.36 https://sourceforge.net/projects/pcre/files/pcre/8.36/ zlib库 http://zlib.net/zlib-1.2

用ansible简单安装那个nginx

用ansible简单安装nginx [[email protected] ansible-nginx]# cat/etc/redhat-release CentOS release 6.7 (Final) [[email protected] ansible-nginx]# uname -r 2.6.32-573.el6.x86_64 安装ansible yum install -y epel-release && sudoyum install -y ansible 为下载的目录创建个文

kubernetes nginx ingress 使用记录

前言 ingress是一种可以暴露k8s集群内部service的方式,用户编辑配置文件定义一个ingress资源即可实现外部网络访问内网service. ingress controller是来管理所有的Ingress的对象,ingress controller内部其实是一个nginx的容器,当ingress controll 通过与 Kubernetes API 交互,感知集群中Ingress规则变化时会按照模板文件生成nginx.conf文件,然后reload该配置文件. 相对于kubern

11. Ingress及Ingress Controller(主nginx ingress controller)

11. Ingress,Ingress Controller拥有七层代理调度能力 什么是Ingress: Ingress是授权入站连接到达集群服务的规则集合 Ingress是一个Kubernetes资源,允许您为在Kubernetes上运行的应用程序配置HTTP负载均衡器,由一个或多个服务代表.这样的负载平衡器是将这些应用程序交付给Kubernetes集群之外的客户端所必需的. Ingress资源支持以下功能:1 基于内容的路由: 基于主机的路由.例如,将具有主机头的请求路由foo.exampl

Docker安装的Nginx如何代理宿主机的服务

1.在安装Docker的时候,会在宿主机安装一个虚拟网关 docker0,查询docker0的IP地址 ip addr show docker0 2.配置docker上安装的nginx server { listen 80; server_name www.test.co; location / { # 设置最大允许上传单个的文件大小 client_max_body_size 100m; proxy_redirect off; proxy_set_header Host $host; proxy