暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mac 上学习k8s系列(1)安装kubernetes-dashboard

在mac上学习k8s,minikube 和docker for mac 是不错的选择,二者环境搭建相对简单,都是一个单节点的最小系统,方便大家快速学习。在https://mp.weixin.qq.com/s/0kOa1SXsUKoaYuCvlsli-w 中介绍了如何在mac(m1 也可以)上搭建docker for mac,下面我们学习下如何安装kubernetes-dashboard

手先我们可以看到本机有一个节点,主节点

     %  kubectl get nodes
    NAME STATUS ROLES AGE VERSION
    docker-desktop Ready master 25h v1.19.7

    然后看看有哪些namespace

       % kubectl get ns
      NAME STATUS AGE
      default Active 25h
      kube-node-lease Active 25h
      kube-public Active 25h
      kube-system Active 25h

      我们可以发现除了kube-system这个namespace,其他namespace 下面都没有pod

        % kubectl get pod -n kube-system
        NAME READY STATUS RESTARTS AGE
        coredns-f9fd979d6-cg26k 1/1 Running 0 25h
        coredns-f9fd979d6-dqffw 1/1 Running 0 25h
        etcd-docker-desktop 1/1 Running 0 25h
        kube-apiserver-docker-desktop 1/1 Running 1 25h
        kube-controller-manager-docker-desktop 1/1 Running 0 25h
        kube-proxy-fw6rz 1/1 Running 0 25h
        kube-scheduler-docker-desktop 1/1 Running 2 25h
        storage-provisioner 1/1 Running 2 25h
        vpnkit-controller 1/1 Running 0 25h

        下面我们准备安装kubernetes-dashboard

        我们将描述文件下载到本地

          curl -o kubernetes-dashboard.yaml https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
             % kubectl apply -f kubernetes-dashboard.yaml
            namespace/kubernetes-dashboard created
            serviceaccount/kubernetes-dashboard created
            service/kubernetes-dashboard created
            secret/kubernetes-dashboard-certs created
            secret/kubernetes-dashboard-csrf created
            secret/kubernetes-dashboard-key-holder created
            configmap/kubernetes-dashboard-settings created
            role.rbac.authorization.k8s.io/kubernetes-dashboard created
            clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
            rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
            clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
            deployment.apps/kubernetes-dashboard created
            service/dashboard-metrics-scraper created
            deployment.apps/dashboard-metrics-scraper created

            我们发现新创建了name-space kubernetes-dashboard

               %  kubectl get ns
              NAME STATUS AGE
              default Active 25h
              kube-node-lease Active 25h
              kube-public Active 25h
              kube-system Active 25h
              kubernetes-dashboard Active 52s

              新的ns 下面有两个pod

                 % kubectl get pod -n kubernetes-dashboard
                NAME READY STATUS RESTARTS AGE
                dashboard-metrics-scraper-7b59f7d4df-pt8n7 0/1 ContainerCreating 0 114s
                kubernetes-dashboard-665f4c5ff-n5dgc 0/1 ContainerCreating 0 114s

                状态是ContainerCreating 看下日志发现网络原因镜像拉不下来

                   % kubectl logs dashboard-metrics-scraper-7b59f7d4df-pt8n7  -n  kubernetes-dashboard
                  Error from server (BadRequest): container "dashboard-metrics-scraper" in pod "dashboard-metrics-scraper-7b59f7d4df-pt8n7" is waiting to start: image can't be pulled

                  网络原因,我们稍等一会儿,或者手动拉镜像

                     % docker pull kubernetesui/metrics-scraper:v1.0.4
                    v1.0.4: Pulling from kubernetesui/metrics-scraper
                    07008dc53a3e: Pulling fs layer
                    1f8ea7f93b39: Downloading [=================================> ] 10.68MB/15.88MB
                    04d0e0aeff30: Download complete

                    下载完后发现已经ok

                       % kubectl get pod -n kubernetes-dashboard
                      NAME READY STATUS RESTARTS AGE
                      dashboard-metrics-scraper-7b59f7d4df-pt8n7 1/1 Running 0 25m
                      kubernetes-dashboard-665f4c5ff-n5dgc 1/1 Running 0 25m

                      启动proxy

                         % kubectl proxy
                        Starting to serve on 127.0.0.1:8001

                        查看token

                          % TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
                          kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
                          echo $TOKEN
                          User "docker-for-desktop" set.
                          eyJhbGciOiJSUzI1NiIsImtpZCI6IkV...

                          访问网页

                            https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&type=10&appmsgid=100001384&token=2110625243&lang=zh_CN

                            输入刚才的token

                            如过我们还想连接其他线上集群可以设置context,通过current-context进行切换

                            https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#-em-set-credentials-em-

                            下面我们安装Ingress ,类似

                              % kubectl apply -f ingress-nginx.yaml
                              namespace/ingress-nginx created
                              serviceaccount/ingress-nginx created
                              configmap/ingress-nginx-controller created
                              clusterrole.rbac.authorization.k8s.io/ingress-nginx created
                              clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
                              role.rbac.authorization.k8s.io/ingress-nginx created
                              rolebinding.rbac.authorization.k8s.io/ingress-nginx created
                              service/ingress-nginx-controller-admission created
                              service/ingress-nginx-controller created
                              deployment.apps/ingress-nginx-controller created
                              Warning: admissionregistration.k8s.io/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io/v1 ValidatingWebhookConfiguration
                              validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
                              clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
                              clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
                              job.batch/ingress-nginx-admission-create created
                              job.batch/ingress-nginx-admission-patch created
                              role.rbac.authorization.k8s.io/ingress-nginx-admission created
                              rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
                              serviceaccount/ingress-nginx-admission created

                              多了ingress-nginx的namespace

                                % kubectl get ns
                                NAME STATUS AGE
                                default Active 26h
                                ingress-nginx Active 8m28s
                                kube-node-lease Active 26h
                                kube-public Active 26h
                                kube-system Active 26h
                                kubernetes-dashboard Active 41m
                                  % kubectl get pod -n ingress-nginx
                                  NAME READY STATUS RESTARTS AGE
                                  ingress-nginx-admission-create-v9bn7 0/1 Completed 0 9m17s
                                  ingress-nginx-admission-patch-55hln 0/1 Completed 0 9m17s
                                  ingress-nginx-controller-98f46f89d-vlrkd 1/1 Running 0 9m27s

                                      创建应用

                                     % kubectl create -f sample/apple.yaml
                                    pod/apple-app created
                                    service/apple-service created
                                    % kubectl create -f sample/banana.yaml
                                    pod/banana-app created
                                    service/banana-service created
                                    % kubectl create -f sample/ingress.yaml
                                    Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
                                    ingress.extensions/example-ingress created

                                    擦看一下我们的应用已经起来了

                                       % kubectl get pod
                                      NAME READY STATUS RESTARTS AGE
                                      apple-app 1/1 Running 0 2m14s
                                      banana-app 1/1 Running 0 2m3
                                         % kubectl get Ingress
                                        Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
                                        NAME CLASS HOSTS ADDRESS PORTS AGE
                                        example-ingress <none> * 80 5m14s


                                        文章转载自golang算法架构leetcode技术php,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                        评论