zl程序教程

您现在的位置是:首页 >  后端

当前栏目

k8s学习之路 | Day3 跟着官方体验 Minikube

k8s官方学习 体验 跟着 Day3 minikube
2023-09-14 09:15:28 时间

跟着官网学习如何使用minikube:https://kubernetes.io/zh-cn/docs/tutorials/hello-minikube/

  • 我自己部署了一个minikube,我就用自己环境跟着走

自己启动一个Dashboard

minikube dashboard

好像等待的时间还挺长,我也不知道对不对,我在多等等吧

image-20230208201952649

好像确实不得行,应该少一些东西,看样子只能本机访问,我们调整一下试试(百度去了)

##
 minikube dashboard --url
 ##再开一个终端,这是我自己的内网IP地址
 kubectl proxy --address='10.0.16.4'  --accept-hosts='' --port=8009

image-20230208202835978

安全组开放一下端口,浏览器访问一下试试(应该没人来访问吧,不过无所谓,):这就可以了

访问地址:http://127.0.0.1:34688/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

image-20230208203023738

Katacoda 环境启动一个Dashborad

还是把自己的关闭了吧,在官网的交互教程上操作吧

官网说了,下面的教程的目的是:

  • 将一个示例应用部署到 Minikube
  • 运行应用程序
  • 查看应用日志
  1. 点击 Launch Terminal,出现这个黑色框,等它初始化一下子(它需要加载你的环境)

image-20230208203615106

  1. 执行"minikube dashboard":只需要将鼠标放在这里,它就有一个小手,就可以点,点了以后终端自己会执行

image-20230208203726616

  1. 点击下面的+号,然后单击“Select port to view on Host 1”

image-20230208204409770

  1. 等待一会,(这个地方实测被墙或者啥子原因),一直打不开,但是结果肯定也和我在自己环境一样,打开是一个web界面,web界面可以操作k8s资源,启动服务等功能

创建Deployment

几个概念:

  • Pod:由一个或多个为了管理和联网而绑定在一起的容器构成的组
  • Deployment检查Pod的健康状况,并在Pod容器终止的情况下重新启动新的容器
  • 官方推荐的管理Pod的创建于扩展方法:Deployment

尝试一下

  1. 【+】-【 Open a new terminal】

image-20230208205829966

  1. 使用 kubectl create 命令创建管理 Pod 的 Deployment,该 Pod 根据提供的 Docker 镜像运行容器
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080

image-20230208210209124

  1. 查看一下这个 Deployment:
kubectl get deployments

image-20230208210255187

  1. 查看Pod
kubectl get pods

image-20230208210343328

  1. 查看集群事件
kubectl get events

image-20230208210452653

  1. 查看kubectl配置
kubectl config view

image-20230208210542611

创建Service

默认情况下,Pod 只能通过k8s集群中的内部IP地址访问,要使得 hello-node 容器可以从 Kubernetes 虚拟网络的外部访问,必须将 Pod 暴露为 Kubernetes Service

这个就很重要了

  1. 暴漏Pod给公网
#--type=LoadBalancer参数表明你希望将你的Service暴露到集群外部的端口上
#镜像 registry.k8s.io/echoserver 中的应用程序代码仅监听TCP8080端口。 如果你用 kubectl expose 暴露了其它的端口,客户端将不能访问其它端口
kubectl expose deployment hello-node --type=LoadBalancer --port=8080

image-20230208211031145

  1. 查看你创建的Service:kubectl get services
在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问,这只是minikube的特性

image-20230208211125329

  1. 运行minikube service hello-node

image-20230208211321209

  1. 单击加号,然后单击 Select port to view on Host 1(反正一访问就会有问题,有限制)

image-20230208211407856

  1. 就访问不了,不过我可以试试自己的环境

    创建Deployment:kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080

image-20230208211752259

查看 Deployment:kubectl get deployments (多等等)

image-20230208211917684

感觉是镜像拉取不到,看看这个镜像能不能从网上下载下来导入到主机上试试

image-20230208212053699

我找到了这个镜像,在dockerhub上:opsdockerimage/e2e-test-images-agnhost 不知道是不是,我尝试一下,

#先拉下来
docker pull docker pull opsdockerimage/e2e-test-images-agnhost:2.30

#再改一下标签
docker tag opsdockerimage/e2e-test-images-agnhost:2.30 registry.k8s.io/e2e-test-images/agnhost:2.39

image-20230208213740975

再观察一下状态:

kubectl get deployments
kubectl get pods

##好像还是不行,算了

image-20230208214605099

还是搞得不是很明白,尝试了一下其他方法,我在自己的云主机执行了

kubectl create deployment --image=nginx nginx-app
kubectl expose deployment nginx-app --port=80 --name=nginx-http --type=NodePort

好像还是不行,先搁置在这里吧,不知道如何访问服务?

启用插件

minikube内置有很多插件,可以启用、禁用和打开它

  1. 列出当前支持的插件:minikube addons list

image-20230209103627820

  1. 启用插件:minikube addons enable metrics-server

image-20230209103712408

  1. 查看创建的 Pod 和 Service:kubectl get pod,svc -n kube-system

image-20230209103753938

  1. 禁用 metrics-server:minikube addons disable metrics-server

image-20230209103837236

清理资源

#删除上面创建的pod和服务
kubectl delete service hello-node
kubectl delete deployment hello-node

#停止minikube
minikube stop

image-20230209104111216

体验总结

  • 官网交互路线不好走,访问有困难,很多概念不清楚,只能先尝试
#通过deployment创建pod
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39

#查看k8s集群中的的部署资源
kubectl get deployments

#查看pod资源
kubectl get pods

#查看集群事件
kubectl get events

#查看kubectl配置
kubectl config view

#创建service,就是暴露Pod
kubectl expose deployment hello-node --type=LoadBalancer --port=8080

#查看创建的service
kubectl get services

#清理minikube全部资源
minikube delete --all
rm -rf ~/.minikube