在mac上学习k8s,minikube 和docker for mac 是不错的选择,二者环境搭建相对简单,都是一个单节点的最小系统,方便大家快速学习。在https://mp.weixin.qq.com/s/0kOa1SXsUKoaYuCvlsli-w 中介绍了如何在mac(m1 也可以)上搭建docker for mac,下面我们学习下如何安装kubernetes-dashboard。
手先我们可以看到本机有一个节点,主节点
% kubectl get nodesNAME STATUS ROLES AGE VERSIONdocker-desktop Ready master 25h v1.19.7
然后看看有哪些namespace
% kubectl get nsNAME STATUS AGEdefault Active 25hkube-node-lease Active 25hkube-public Active 25hkube-system Active 25h
我们可以发现除了kube-system这个namespace,其他namespace 下面都没有pod
% kubectl get pod -n kube-systemNAME READY STATUS RESTARTS AGEcoredns-f9fd979d6-cg26k 1/1 Running 0 25hcoredns-f9fd979d6-dqffw 1/1 Running 0 25hetcd-docker-desktop 1/1 Running 0 25hkube-apiserver-docker-desktop 1/1 Running 1 25hkube-controller-manager-docker-desktop 1/1 Running 0 25hkube-proxy-fw6rz 1/1 Running 0 25hkube-scheduler-docker-desktop 1/1 Running 2 25hstorage-provisioner 1/1 Running 2 25hvpnkit-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.yamlnamespace/kubernetes-dashboard createdserviceaccount/kubernetes-dashboard createdservice/kubernetes-dashboard createdsecret/kubernetes-dashboard-certs createdsecret/kubernetes-dashboard-csrf createdsecret/kubernetes-dashboard-key-holder createdconfigmap/kubernetes-dashboard-settings createdrole.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrole.rbac.authorization.k8s.io/kubernetes-dashboard createdrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createddeployment.apps/kubernetes-dashboard createdservice/dashboard-metrics-scraper createddeployment.apps/dashboard-metrics-scraper created
我们发现新创建了name-space kubernetes-dashboard
% kubectl get nsNAME STATUS AGEdefault Active 25hkube-node-lease Active 25hkube-public Active 25hkube-system Active 25hkubernetes-dashboard Active 52s
新的ns 下面有两个pod
% kubectl get pod -n kubernetes-dashboardNAME READY STATUS RESTARTS AGEdashboard-metrics-scraper-7b59f7d4df-pt8n7 0/1 ContainerCreating 0 114skubernetes-dashboard-665f4c5ff-n5dgc 0/1 ContainerCreating 0 114s
状态是ContainerCreating 看下日志发现网络原因镜像拉不下来
% kubectl logs dashboard-metrics-scraper-7b59f7d4df-pt8n7 -n kubernetes-dashboardError 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.4v1.0.4: Pulling from kubernetesui/metrics-scraper07008dc53a3e: Pulling fs layer1f8ea7f93b39: Downloading [=================================> ] 10.68MB/15.88MB04d0e0aeff30: Download complete
下载完后发现已经ok
% kubectl get pod -n kubernetes-dashboardNAME READY STATUS RESTARTS AGEdashboard-metrics-scraper-7b59f7d4df-pt8n7 1/1 Running 0 25mkubernetes-dashboard-665f4c5ff-n5dgc 1/1 Running 0 25m
启动proxy
% kubectl proxyStarting 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 $TOKENUser "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.yamlnamespace/ingress-nginx createdserviceaccount/ingress-nginx createdconfigmap/ingress-nginx-controller createdclusterrole.rbac.authorization.k8s.io/ingress-nginx createdclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx createdrole.rbac.authorization.k8s.io/ingress-nginx createdrolebinding.rbac.authorization.k8s.io/ingress-nginx createdservice/ingress-nginx-controller-admission createdservice/ingress-nginx-controller createddeployment.apps/ingress-nginx-controller createdWarning: admissionregistration.k8s.io/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io/v1 ValidatingWebhookConfigurationvalidatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission createdclusterrole.rbac.authorization.k8s.io/ingress-nginx-admission createdclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission createdjob.batch/ingress-nginx-admission-create createdjob.batch/ingress-nginx-admission-patch createdrole.rbac.authorization.k8s.io/ingress-nginx-admission createdrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission createdserviceaccount/ingress-nginx-admission created
多了ingress-nginx的namespace
% kubectl get nsNAME STATUS AGEdefault Active 26hingress-nginx Active 8m28skube-node-lease Active 26hkube-public Active 26hkube-system Active 26hkubernetes-dashboard Active 41m
% kubectl get pod -n ingress-nginxNAME READY STATUS RESTARTS AGEingress-nginx-admission-create-v9bn7 0/1 Completed 0 9m17singress-nginx-admission-patch-55hln 0/1 Completed 0 9m17singress-nginx-controller-98f46f89d-vlrkd 1/1 Running 0 9m27s
创建应用
% kubectl create -f sample/apple.yamlpod/apple-app createdservice/apple-service created% kubectl create -f sample/banana.yamlpod/banana-app createdservice/banana-service created% kubectl create -f sample/ingress.yamlWarning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingressingress.extensions/example-ingress created
擦看一下我们的应用已经起来了
% kubectl get podNAME READY STATUS RESTARTS AGEapple-app 1/1 Running 0 2m14sbanana-app 1/1 Running 0 2m3
% kubectl get IngressWarning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 IngressNAME CLASS HOSTS ADDRESS PORTS AGEexample-ingress <none> * 80 5m14s


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




