Kubernetes的minikube

文章目录

  • 环境
  • 概述
  • 准备
  • 安装
  • 启动
  • 和集群交互
  • dashboard
  • 创建deployment
  • 创建service
  • 启用addon
  • 清理
  • 参考

环境

  • RHEL 9.3
  • Docker Community 24.0.7
  • miniKube v1.32.0

概述

minikube可以快速的在macOS、Linux和Windows上搭建本地的Kubernetes集群,帮助Kubernetes小白快速上手。

准备

需要准备好容器/虚拟机管理器,比如Docker,Podman等,本文使用Docker。

要在RHEL安装Docker,可以参考官网( https://docs.docker.com/engine/install/centos ),也可以参考我另一篇文档( https://blog.csdn.net/duke_ding2/article/details/135208607 )。

安装

打开浏览器,访问 https://minikube.sigs.k8s.io/docs/start ,选择适当的选项:

在这里插入图片描述
生成curl和install命令如下:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudo install minikube-linux-amd64 /usr/local/bin/minikube

分别运行这两条命令,下载并安装minikube。

启动

minikube start

报错如下:

$ minikube start
😄  minikube v1.32.0 on Redhat 9.3
✨  Automatically selected the docker driver. Other choices: none, ssh⛔  Exiting due to RSRC_INSUFFICIENT_CONTAINER_MEMORY: docker only has 1731MiB available, less than the required 1800MiB for Kubernetes

看起来是内存不够用:

$ free -mtotal        used        free      shared  buff/cache   available
Mem:            1731        1339         114          17         445         392
Swap:           2051         200        1851

我使用的是虚拟机,内存是2GB。加大到3GB:

$ free -mtotal        used        free      shared  buff/cache   available
Mem:            2755        1436        1055          18         499        1318
Swap:           2051         200        1851

再次尝试启动minikube:

$ minikube start
😄  minikube v1.32.0 on Redhat 9.3
✨  Automatically selected the docker driver. Other choices: ssh, none🧯  The requested memory allocation of 2200MiB does not leave room for system overhead (total system memory: 2755MiB). You may face stability issues.
💡  Suggestion: Start minikube with less memory allocated: 'minikube start --memory=2200mb'📌  Using Docker driver with root privileges
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.28.3 preload ...> preloaded-images-k8s-v18-v1...:  403.35 MiB / 403.35 MiB  100.00% 16.12 M> index.docker.io/kicbase/sta...:  453.89 MiB / 453.90 MiB  100.00% 1.51 Mi
❗  minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.42, but successfully downloaded docker.io/kicbase/stable:v0.0.42 as a fallback image
🔥  Creating docker container (CPUs=2, Memory=2200MB) ...
🐳  Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...▪ Generating certificates and keys ...▪ Booting up control plane ...▪ Configuring RBAC rules ...
🔗  Configuring bridge CNI (Container Networking Interface) ...Using image gcr.io/k8s-minikube/storage-provisioner:v5
🔎  Verifying Kubernetes components...
🌟  Enabled addons: storage-provisioner, default-storageclass
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

这次启动成功了,但提示说3GB内存还是不太够用,后来我把虚拟机内存增大到了4GB,就不再警告了。

另外,minikube启动特别慢,因为要pull image。为了提高效率,可以指定国内镜像:

minikube start --image-mirror-country='cn'

本文中,没有使用国内镜像。

和集群交互

输出里还有一个消息,说是没找到 kubectl ,有两种解决办法:

  • 使用 minikube kubectl -- 来代替。为了省事,可以设置别名:
alias kubectl="minikube kubectl --"
  • 也可以直接下载一个 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

注:如果下载太慢,可以直接找一个现成的。

我使用的第二种方法。

查看 kubectl 版本:

$ kubectl version
Client Version: v1.29.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.28.3

通过 kubectl ,就可以和集群交互了,比如:

$ kubectl get pod -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-5dd5756b68-mlw2h           1/1     Running   1 (14m ago)   16m
kube-system   etcd-minikube                      1/1     Running   1 (14m ago)   16m
kube-system   kube-apiserver-minikube            1/1     Running   1 (12m ago)   16m
kube-system   kube-controller-manager-minikube   1/1     Running   1 (14m ago)   16m
kube-system   kube-proxy-7n9sj                   1/1     Running   1 (14m ago)   16m
kube-system   kube-scheduler-minikube            1/1     Running   1 (14m ago)   16m
kube-system   storage-provisioner                1/1     Running   3 (12m ago)   16m
$ kubectl get deployment -A
NAMESPACE     NAME      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   coredns   1/1     1            1           17m

dashboard

(注:如果Linux服务器没有安装图形界面,而且在客户端浏览器也无法直接访问服务器的私有IP地址,则可以通过正向或反向代理,在客户端的浏览器访问服务器的私有IP地址,具体操作可参见我另一篇文档 https://blog.csdn.net/duke_ding2/article/details/135627263 。)

启动dashboard:

$ minikube dashboard
🔌  Enabling dashboard ...Using image docker.io/kubernetesui/dashboard:v2.7.0▪ Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
💡  Some dashboard features require the metrics-server addon. To enable all features please run:minikube addons enable metrics-server	🤔  Verifying dashboard health ...
🚀  Launching proxy ...
🤔  Verifying proxy health ...
🎉  Opening http://127.0.0.1:35853/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

注意:由于连接国外网络问题,会花很长时间。在等待的时候,可以在另一个终端窗口查看pod:

$ kubectl get pod -A
NAMESPACE              NAME                                         READY   STATUS              RESTARTS      AGE
kube-system            coredns-5dd5756b68-mlw2h                     1/1     Running             1 (18m ago)   20m
kube-system            etcd-minikube                                1/1     Running             1 (19m ago)   20m
kube-system            kube-apiserver-minikube                      1/1     Running             1 (17m ago)   20m
kube-system            kube-controller-manager-minikube             1/1     Running             1 (19m ago)   20m
kube-system            kube-proxy-7n9sj                             1/1     Running             1 (19m ago)   20m
kube-system            kube-scheduler-minikube                      1/1     Running             1 (19m ago)   20m
kube-system            storage-provisioner                          1/1     Running             3 (17m ago)   20m
kubernetes-dashboard   dashboard-metrics-scraper-7fd5cb4ddc-fvk8z   1/1     Running             0             2m29s
kubernetes-dashboard   kubernetes-dashboard-8694d4445c-tljmm        0/1     ContainerCreating   0             2m29s

可见,还在创建容器。

查看该pod:

$ kubectl describe pod kubernetes-dashboard-8694d4445c-tljmm -n kubernetes-dashboard
......
Events:Type    Reason     Age    From               Message----    ------     ----   ----               -------Normal  Scheduled  3m18s  default-scheduler  Successfully assigned kubernetes-dashboard/kubernetes-dashboard-8694d4445c-tljmm to minikubeNormal  Pulling    3m18s  kubelet            Pulling image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93"

可见,还在pull image。

最终,会从命令行自动启动浏览器,打开dashboard:

在这里插入图片描述

在命令行按“Ctrl + C”停止dashboard。

注意:按“Ctrl + C”停止进程后,dashboard的pod还在:

 kubectl get pod -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-7fd5cb4ddc-fvk8z   1/1     Running   0          19m
kubernetes-dashboard-8694d4445c-tljmm        1/1     Running   0          19m

当下次再启动dashboard时,就会非常快。

如果不想在命令行自动启动浏览器,可以使用 --url 选项:

$ minikube dashboard --url
🤔  Verifying dashboard health ...
🚀  Launching proxy ...
🤔  Verifying proxy health ...
http://127.0.0.1:33181/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

然后手工打开浏览器,访问提供的URL,也是一样的。

注意:默认情况下,dashboard只在内部Kubernetes虚拟网络里可以访问,从 minikube dashboard 的输出里可以看到,创建了一个临时的代理,所以我们在Kubernetes虚拟网络的外部可以访问dashboard。

创建deployment

$ kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
deployment.apps/hello-node created

命令立即返回结果,但实际上还并没有完成创建。

注:可以用 kubectl create deployment --help 查看帮助。

查看deployment:

$ kubectl get deployments
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
hello-node   0/1     1            0           44s

查看pod:

$ kubectl get pod
NAME                         READY   STATUS         RESTARTS   AGE
hello-node-ccf4b9788-hzgrk   0/1     ErrImagePull   0          98s

查看该pod:

$ kubectl describe pod hello-node-ccf4b9788-hzgrk
......
Events:Type     Reason     Age                    From               Message----     ------     ----                   ----               -------Normal   Scheduled  7m27s                  default-scheduler  Successfully assigned default/hello-node-ccf4b9788-hzgrk to minikubeWarning  Failed     6m11s (x2 over 6m56s)  kubelet            Failed to pull image "registry.k8s.io/e2e-test-images/agnhost:2.39": Error response from daemon: Head "https://us-west2-docker.pkg.dev/v2/k8s-artifacts-prod/images/e2e-test-images/agnhost/manifests/2.39": dial tcp 64.233.188.82:443: i/o timeoutWarning  Failed     3m52s (x4 over 6m56s)  kubelet            Error: ErrImagePullWarning  Failed     3m52s (x2 over 5m14s)  kubelet            Failed to pull image "registry.k8s.io/e2e-test-images/agnhost:2.39": Error response from daemon: Head "https://us-west2-docker.pkg.dev/v2/k8s-artifacts-prod/images/e2e-test-images/agnhost/manifests/2.39": dial tcp 108.177.125.82:443: i/o timeoutWarning  Failed     3m39s (x6 over 6m55s)  kubelet            Error: ImagePullBackOffNormal   BackOff    3m27s (x7 over 6m55s)  kubelet            Back-off pulling image "registry.k8s.io/e2e-test-images/agnhost:2.39"Normal   Pulling    2m21s (x5 over 7m27s)  kubelet            Pulling image "registry.k8s.io/e2e-test-images/agnhost:2.39"

registry.k8s.io 连接不上,I/O超时了。

删除deployment:

kubectl delete deployments hello-node

注意:会连同pod一起删除。

本文采用了一个变通的方法:

  • 先在一个能访问到 registry.k8s.io 的机器上,把 registry.k8s.io/e2e-test-images/agnhost:2.39 pull下来:
docker pull registry.k8s.io/e2e-test-images/agnhost:2.39
  • 然后再push到dockerhub里:
docker logindocker tag xxxxxxx kaiding1/agnhost:2.39docker logindocker push kaiding1/agnhost:2.39

这样,就能从dockerhub把它pull下来了。

再次尝试创建deployment:

kubectl create deployment hello-node --image=kaiding1/agnhost:2.39 -- /agnhost netexec --http-port=8080

大约几分钟后,就部署好了。

$ kubectl get deployments
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
hello-node   1/1     1            1           17m
$ kubectl get pods
NAME                          READY   STATUS    RESTARTS   AGE
hello-node-5f85cbcdcb-knbcm   1/1     Running   0          17m
$ kubectl get events
LAST SEEN   TYPE      REASON              OBJECT                             MESSAGE
......
18m         Normal    Scheduled           pod/hello-node-5f85cbcdcb-knbcm    Successfully assigned default/hello-node-5f85cbcdcb-knbcm to minikube
18m         Normal    Pulling             pod/hello-node-5f85cbcdcb-knbcm    Pulling image "kaiding1/agnhost:2.39"
12m         Normal    Pulled              pod/hello-node-5f85cbcdcb-knbcm    Successfully pulled image "kaiding1/agnhost:2.39" in 5m59.928s (5m59.928s including waiting)
12m         Normal    Created             pod/hello-node-5f85cbcdcb-knbcm    Created container agnhost
12m         Normal    Started             pod/hello-node-5f85cbcdcb-knbcm    Started container agnhost
......
18m         Normal    ScalingReplicaSet   deployment/hello-node              Scaled up replica set hello-node-5f85cbcdcb to 1
$ kubectl config view
apiVersion: v1
clusters:
- cluster:certificate-authority: /home/ding/.minikube/ca.crtextensions:- extension:last-update: Mon, 15 Jan 2024 15:05:08 CSTprovider: minikube.sigs.k8s.ioversion: v1.32.0name: cluster_infoserver: https://192.168.49.2:8443name: minikube
contexts:
- context:cluster: minikubeextensions:- extension:last-update: Mon, 15 Jan 2024 15:05:08 CSTprovider: minikube.sigs.k8s.ioversion: v1.32.0name: context_infonamespace: defaultuser: minikubename: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikubeuser:client-certificate: /home/ding/.minikube/profiles/minikube/client.crtclient-key: /home/ding/.minikube/profiles/minikube/client.key
$ kubectl logs hello-node-5f85cbcdcb-knbcm
I0115 09:32:18.393297       1 log.go:195] Started HTTP server on port 8080
I0115 09:32:18.394281       1 log.go:195] Started UDP server on port  8081

创建service

默认情况下,只能在Kubernetes集群里通过内部IP地址访问pod。要想在Kubernetes虚拟网络之外访问 hello-node 容器,需要把pod暴露为Kubernetes的service。

$ kubectl expose deployment hello-node --type=LoadBalancer --port=8080
service/hello-node exposed

其中, --type=LoadBalancer 选项表示把service暴露到集群之外。

该测试image里的应用代码只监听TCP 8080端口。如果使用 kubectl expose 命令暴露到一个不同的端口,则客户端无法连接到该端口。

查看service:

$ kubectl get services
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
hello-node   LoadBalancer   10.98.67.193   <pending>     8080:30161/TCP   3m39s
kubernetes   ClusterIP      10.96.0.1      <none>        443/TCP          175m

在支持负载均衡的云里,会provision一个外部IP地址来访问service。而对于minikube, minikube service 命令的 LoadBalancer 类型使得service可被外部访问。

$ minikube service hello-node
|-----------|------------|-------------|---------------------------|
| NAMESPACE |    NAME    | TARGET PORT |            URL            |
|-----------|------------|-------------|---------------------------|
| default   | hello-node |        8080 | http://192.168.49.2:30161 |
|-----------|------------|-------------|---------------------------|
🎉  Opening service default/hello-node in default browser...

会自动打开浏览器,访问service:

在这里插入图片描述

同理,也可以加上 --url 选项,只显示URL,不打开浏览器。

$ minikube service hello-node --url
http://192.168.49.2:32623

此外,还可以使用 minikube tunnel 命令为deployment创建一个routable IP(我理解就是public IP)。

在另外一个终端窗口,运行:

$ minikube tunnel
[sudo] password for ding: 
Status:	machine: minikubepid: 14161route: 10.96.0.0/12 -> 192.168.49.2minikube: Runningservices: [hello-node]errors: minikube: no errorsrouter: no errorsloadbalancer emulator: no errors

然后再查看service:

$ kubectl get service hello-node
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)          AGE
hello-node   LoadBalancer   10.106.63.28   10.106.63.28   8080:32623/TCP   6m48s

现在, EXTERNAL-IP 有值了。

可使用该IP地址加8080端口访问hello-node应用:

在这里插入图片描述

启用addon

minikube包含了一套内建的addon。这些addon可以在本地Kubernetes环境里被启用、禁用、打开。

$ minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | minikube                       |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | enabled ✅   | Kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | minikube                       |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [info@inaccel.com])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | minikube                       |
| inspektor-gadget            | minikube | disabled     | 3rd party                      |
|                             |          |              | (inspektor-gadget.io)          |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubeflow                    | minikube | disabled     | 3rd party                      |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-device-plugin        | minikube | disabled     | 3rd party (NVIDIA)             |
| nvidia-driver-installer     | minikube | disabled     | 3rd party (Nvidia)             |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | minikube                       |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ✅   | minikube                       |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| storage-provisioner-rancher | minikube | disabled     | 3rd party (Rancher)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

例如,要启用 metrics-server

$ minikube addons enable metrics-server
💡  metrics-server is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS▪ Using image registry.k8s.io/metrics-server/metrics-server:v0.6.4
🌟  The 'metrics-server' addon is enabled

虽然返回消息说已经启用了,但查看pod和service:

$ kubectl get pod,svc -n kube-system
NAME                                   READY   STATUS             RESTARTS        AGE
pod/coredns-5dd5756b68-mlw2h           1/1     Running            1 (3h21m ago)   3h23m
pod/etcd-minikube                      1/1     Running            1 (3h21m ago)   3h23m
pod/kube-apiserver-minikube            1/1     Running            1 (3h20m ago)   3h23m
pod/kube-controller-manager-minikube   1/1     Running            1 (3h21m ago)   3h23m
pod/kube-proxy-7n9sj                   1/1     Running            1 (3h21m ago)   3h23m
pod/kube-scheduler-minikube            1/1     Running            1 (3h21m ago)   3h23m
pod/metrics-server-7c66d45ddc-2kqpn    0/1     ImagePullBackOff   0               55s
pod/storage-provisioner                1/1     Running            3 (3h19m ago)   3h23mNAME                     TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
service/kube-dns         ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   3h23m
service/metrics-server   ClusterIP   10.98.36.138   <none>        443/TCP                  55s

可见,多了 metrics-server-7c66d45ddc-2kqpn pod,但是没有启起来。

$ kubectl describe pod metrics-server-7c66d45ddc-2kqpn
......
Events:Type     Reason     Age                From               Message----     ------     ----               ----               -------Normal   Scheduled  102s               default-scheduler  Successfully assigned kube-system/metrics-server-7c66d45ddc-2kqpn to minikubeWarning  Failed     28s (x2 over 70s)  kubelet            Failed to pull image "registry.k8s.io/metrics-server/metrics-server:v0.6.4@sha256:ee4304963fb035239bb5c5e8c10f2f38ee80efc16ecbdb9feb7213c17ae2e86e": Error response from daemon: Get "https://us-west2-docker.pkg.dev/v2/k8s-artifacts-prod/images/metrics-server/metrics-server/manifests/sha256:ee4304963fb035239bb5c5e8c10f2f38ee80efc16ecbdb9feb7213c17ae2e86e": dial tcp 108.177.125.82:443: i/o timeoutWarning  Failed     28s (x2 over 70s)  kubelet            Error: ErrImagePullNormal   BackOff    15s (x2 over 70s)  kubelet            Back-off pulling image "registry.k8s.io/metrics-server/metrics-server:v0.6.4@sha256:ee4304963fb035239bb5c5e8c10f2f38ee80efc16ecbdb9feb7213c17ae2e86e"Warning  Failed     15s (x2 over 70s)  kubelet            Error: ImagePullBackOffNormal   Pulling    4s (x3 over 102s)  kubelet            Pulling image "registry.k8s.io/metrics-server/metrics-server:v0.6.4@sha256:ee4304963fb035239bb5c5e8c10f2f38ee80efc16ecbdb9feb7213c17ae2e86e"

又是 registry.k8s.io 的网络问题。

$ kubectl describe deployment metrics-server -n kube-system
......
Image:      registry.k8s.io/metrics-server/metrics-server:v0.6.4@sha256:ee4304963fb035239bb5c5e8c10f2f38ee80efc16ecbdb9feb7213c17ae2e86e

还是用老方法,先在能访问 registry.k8s.io 的机器上把image pull下来,然后再push到docker hub,具体做法参见上面的例子。

接下来, kubectl edit deployment 修改 metrics-server 的源:

kubectl edit deployment metrics-server -n kube-system

找到:

image: registry.k8s.io/metrics-server/metrics-server:v0.6.4@sha256:ee4304963fb035239bb5c5e8c10f2f38ee80efc16ecbdb9feb7213c17ae2e86e

改为:

image: kaiding1/metrics-server:v0.6.4@sha256:7726dcf079af5d81d69797ee9c01d667b27e4bb3318ad51b87e23c732d047b55

注意:digest不一样,说明二者并不是完全一样的。

保存退出,pod就会自动重建:

$ kubectl get pod -n kube-system
NAME                               READY   STATUS              RESTARTS        AGE
coredns-5dd5756b68-mlw2h           1/1     Running             1 (4h34m ago)   4h35m
etcd-minikube                      1/1     Running             1 (4h34m ago)   4h36m
kube-apiserver-minikube            1/1     Running             1 (4h32m ago)   4h36m
kube-controller-manager-minikube   1/1     Running             1 (4h34m ago)   4h36m
kube-proxy-7n9sj                   1/1     Running             1 (4h34m ago)   4h35m
kube-scheduler-minikube            1/1     Running             1 (4h34m ago)   4h36m
metrics-server-5c7d7988f6-9csdf    0/1     ContainerCreating   0               9s
metrics-server-b48d8d5fb-h86xr     0/1     ImagePullBackOff    0               7m16s
storage-provisioner                1/1     Running             3 (4h32m ago)   4h36m

大约几分钟后,pod起来了。

$ kubectl get pod,svc -n kube-system
NAME                                   READY   STATUS    RESTARTS        AGE
pod/coredns-5dd5756b68-mlw2h           1/1     Running   1 (4h42m ago)   4h44m
pod/etcd-minikube                      1/1     Running   1 (4h42m ago)   4h44m
pod/kube-apiserver-minikube            1/1     Running   1 (4h41m ago)   4h44m
pod/kube-controller-manager-minikube   1/1     Running   1 (4h42m ago)   4h44m
pod/kube-proxy-7n9sj                   1/1     Running   1 (4h42m ago)   4h44m
pod/kube-scheduler-minikube            1/1     Running   1 (4h42m ago)   4h44m
pod/metrics-server-5c7d7988f6-9csdf    1/1     Running   0               8m17s
pod/storage-provisioner                1/1     Running   3 (4h40m ago)   4h44mNAME                     TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
service/kube-dns         ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   4h44m
service/metrics-server   ClusterIP   10.98.36.138   <none>        443/TCP                  81m1/1     Running   3 (4h38m ago)   4h42m

还有一个办法,就是打开 hub.docker.com ,搜索对应的image metrics-server:v0.6.4

在这里插入图片描述

如果找到合适的image,也可以直接用。

启用 metrics-server 后,就可以查看资源消耗情况了,比如:

$ kubectl top pods
NAME                          CPU(cores)   MEMORY(bytes)   
hello-node-5f85cbcdcb-knbcm   1m           11Mi

最后,禁用 metrics-server

$ minikube addons disable metrics-server
🌑  "The 'metrics-server' addon is disabled

清理

kubectl delete service hello-nodekubectl delete deployment hello-nodeminikube stopminikube delete

参考

  • https://kubernetes.io/docs/tutorials/hello-minikube
  • https://minikube.sigs.k8s.io/docs/start
  • https://blog.csdn.net/heiwa110/article/details/127614981
  • https://blog.csdn.net/icanflyingg/article/details/126370832

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鲁大师2023年牛角尖颁奖盛典揭晓,年度最强产品诞生

1月18日&#xff0c;鲁大师2023年度牛角尖颁奖典礼在四川省内江市威远县船石湖豪生温泉度假酒店完美落幕。 本届鲁大师牛角尖颁奖盛典举办地选在了威远县可谓是深有其意&#xff0c;其名称的由来最早可追溯到隋朝&#xff0c;取“威名远震”之意。而这也与鲁大师牛角尖奖项的设…

用通俗易懂的方式讲解:使用Llama-2、PgVector和LlamaIndex,构建大模型 RAG 全流程

近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;取得了显著的进步&#xff0c;然而大模型缺点之一是幻觉问题&#xff0c;即“一本正经的胡说八道”。其中RAG&#xff08;Retrieval Augmented Generation&#xff0c;检索增强生成&#xff09;是解决幻觉比较有效的…

自建呼叫中心还是使用云呼叫中心?

随着云呼叫技术的逐渐普及&#xff0c;云呼叫中心在全国的推广&#xff0c;越来越多中小企业开始使用云呼叫中心开展企业外呼及电话客服业务。但还是有很多企业坚持使用传统的自建呼叫中心。那么云呼叫中心跟自建呼叫中心有什么区别呢&#xff1f;企业又该作何选择&#xff1f;…

百德朗王晓明:用差异化创新,解决智能楼控项目深层痛点

近年来&#xff0c;国家对物联网产业的支持政策不断释放&#xff0c;《“十四五”数字经济发展规划》明确提出了要加速空间信息基础设施升级。作为AIoT控制系统核心技术引领者是如何看待物联网时代下的智慧楼宇与能源应用发展的呢&#xff1f;近日&#xff0c;百德朗联合创始人…

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测 目录 回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测&…

Redis持久化方案RDB和AOF

Redis两种持久化方案 RDB持久化AOF持久化 RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后&#xff0c;从磁盘读取快照文…

2024年pmp的考试时间是什么时候?

2024最新考试时间已经出来了&#xff1a;分别是 3月、6月、8月、11月&#xff0c;四次&#xff0c;具体考试日期还需要关注官网的进一步通知。 一、PMP报考条件 年龄满足 22 周岁有官方授权的培训机构给的 35个PDU&#xff08;学时&#xff09; 就能报名。 是不是相当于没有…

13 STM32-随机数发生器 (RNG)

13.1 随机数发生器 (RNG)简介 RNG 处理器是一个以连续模拟噪声为基础的随机数发生器&#xff0c;在主机读数时提供一个 32 位的随机数. RNG 提供由模拟量发生器产生的 32 位随机数,两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期 13.2 RNG框图 随机数发生器采用模拟电路…

SpringCloud整合Zookeeper代替Eureka案例

文章目录 本期代码下载地址zookeeper简介zookeeper下载安装新建服务提供者测试 新建消费者测试 本期代码下载地址 地址:https://github.com/13thm/study_springcloud/tree/main/days4 zookeeper简介 zookeeper是一个分布式协调工具&#xff0c;可以实现注册中心功能 关闭Lin…

C语言第二弹---C语言基本概念(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 C语言基本概念 1、字符串和\02、转义字符3、语句和语句分类3.1、空语句3.2、表达式语句3.3、函数调⽤语句3.4、复合语句3.5、控制语句 4、注释4.1、注释的两种形…

MySQL存储函数与存储过程习题

创建表并插入数据&#xff1a; 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 ​ ​ sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 2 1、创建一个可以统计表格内记录…

【数据结构和算法】删除链表的中间节点

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 前言 这是力扣的 2095 题&#xff0c;难度为中等&#xff0c;解题方案有很多种…

Pytest参数化-你不知道的使用技巧

前言 unittest单元测试框架使用DDT进行数据驱动测试&#xff0c;那么身为功能更加强大且更加灵活的Pytest框架怎么可能没有数据驱动的概念呢&#xff1f;其实Pytest是使用pytest.mark.parametrize装饰器来实现数据驱动测试的&#xff0c;那么今天我们就简单来说说在它是如何进…

shopee店铺选品规划:如何在Shopee平台上进行店铺选品规划

在如今激烈竞争的电商市场上&#xff0c;一个有效的选品策略对于卖家来说至关重要。在Shopee平台上进行店铺选品规划时&#xff0c;卖家可以遵循以下步骤来制定一个成功的选品策略。 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#xff08;复制浏览器打开&#…

高德地图绘制 GPX 数据路线

高德地图绘制 GPX 数据路线 .gpx 文件是在分享地图路径时最常用的一种数据格式。里面包含了路径点的相关信息&#xff0c;每个点还有可能拥有自己的时间、距离等信息。 一直想自己导出自己的 gpx 路线&#xff0c;然后导入到地图中查看这个路线的具体信息&#xff0c;今天细致…

CentOS 7上安装Anaconda 详细教程

目录 1. 下载Anaconda安装脚本2. 校验数据完整性&#xff08;可选&#xff09;3. 运行安装脚本4. 遵循安装指南5. 选择安装位置6. 初始化Anaconda7. 激活安装8. 测试安装9. 更新Anaconda10. 使用Anaconda 1. 下载Anaconda安装脚本 首先需要从Anaconda的官方网站下载最新的Anac…

千万不要在方法上打断点!千万不要!

我上周遇到了一个莫名其妙的搞心态的问题&#xff0c;浪费了我好几个小时。 气死我了&#xff0c;拿这几个小时来敲&#xff08;摸&#xff09;代&#xff08;摸&#xff09;码&#xff08;鱼&#xff09;不香吗&#xff1f; 主要是最后问题的解决方式也让我特别的无语&#…

Redis实现好友功能

好友功能是目前社交场景的必备功能之一&#xff0c;一般好友相关的功能包含有&#xff1a;关注/取关、我&#xff08;他&#xff09;的关注、我&#xff08;他&#xff09;的粉丝、共同关注等这样一些功能。 1.关注和取关 1.设计思路 总体思路我们采用MySQL Redis的方式结合…

【Ant Design of Vue】Modal.confirm无法关闭的bug

一、问题 在使用 Ant Design Vue 的 Modal.confirm 确认框时&#xff0c;出现了点击取消和确定后 Modal.confirm 确认框无法关闭的问题 二、代码 代码完全是 copy 的官网的代码&#xff0c;但是 copy 到本地后就会出现上述问题 <template><a-button click"sho…

48-DOM节点,innerHTML,innerText,outerHTML,outerText,静态获取,单机click,cssText

1.DOM基础 Document Object Module,文档对象模型,window对象,document文档,都可以获取和操作 1)文档节点 2)属性节点(标签内的属性href,src) 3)文本节点(标签内的文字) 4)注释节点 5)元素节点(标签) 2.获取元素节点 2.1通过标签名获取getElementsByTagName() …