作者:半身风雪
上一节:Kubernetes 概述



一、创建Minikube

  1. 上一节我们一起安装了Minikube 集群,接下来我们可以在Docker 控制面板中启动,也可以直接使用命令启动

minikube start

如果这里报错: /etc/kubernetes: mkdir /etc/kubernetes: permission denied

❌ Exiting due to GUEST_START: Failed kubeconfig update: writing kubeconfig: Error creating directory: /etc/kubernetes: mkdir /etc/kubernetes: permission denied

原因:$KUBECONFIG 变量被占用了

解决:重置$KUBECONFIG 变量

unset KUBECONFIG

强制使用root 身份执行:

minikube start --force --driver=docker

😄 Darwin 12.1 上的 minikube v1.26.0 ❗ minikube skips various
validations when --force is supplied; this may lead to unexpected
behavior 🆕 Kubernetes 1.24.1 is now available. If you would like to
upgrade, specify: --kubernetes-version=v1.24.1 ✨ 根据现有的配置文件使用 docker
驱动程序 👍 Starting control plane node minikube in cluster minikube 🚜
Pulling base image …
> index.docker.io/kicbase/sta…: 0 B [_____________________] ?% ? p/s 2m7s 🏃 Updating the running docker “minikube” container … 🐳
正在 Docker 20.10.12 中准备 Kubernetes v1.23.3…
▪ kubelet.housekeeping-interval=5m 🔎 Verifying Kubernetes components…
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
▪ Using image kubernetesui/dashboard:v2.6.0
▪ Using image kubernetesui/metrics-scraper:v1.0.8 🌟 Enabled addons: storage-provisioner, default-storageclass, dashboard 🏄 Done!
kubectl is now configured to use “minikube” cluster and “default”
namespace by default

  1. 在浏览器中打开 Kubernetes 仪表板(Dashboard)

minikube dashboard

运行之后,会为我们打开一个Web 浏览器界面

在这里插入图片描述

在这里,我们可以在仪表板上创建 Kubernetes 资源,例如 Deployment 和 Service。

二、创建Deployment

  1. 使用 kubectl create 命令创建管理 Pod 的 Deployment。

kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4

  1. 查看 Deployment

kubectl get deployments

输出结果:

NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 0/1 1 0 23s

  1. 查看 Pod

kubectl get pods

输出结果:

NAME READY STATUS RESTARTS AGE
hello-node-6b89d599b9-6bbjk 1/1 Running 0 4m54s

  1. 查看集群事件:

kubectl get events

这里会输出集群的所有事件

在这里插入图片描述

  1. 查看 kubectl 配置:

kubectl config view

kubectl 输出当前的所有配置
在这里插入图片描述

三、创建 Service

  1. 使用 kubectl expose 命令将 Pod 暴露给公网:

kubectl expose deployment hello-node --type=LoadBalancer --port=8080

这里的 --type=LoadBalancer 参数表明你希望将你的 Service 暴露到集群外部。

输出结果:

service/hello-node exposed

镜像 k8s.gcr.io/echoserver 中的应用程序代码仅监听 TCP 8080 端口。 如果你用 kubectl expose 暴露了其它的端口,客户端将不能访问其它端口。

  1. 查看你创建的 Service:

kubectl get services

输出结果:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.107.63.235 8080:31848/TCP 42s
kubernetes ClusterIP 10.96.0.1 443/TCP 41m

对于支持负载均衡器的云服务平台而言,平台将提供一个外部 IP 来访问该服务。 在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问。

  1. 运行下面的命令:

minikube service hello-node

运行输出结果:

|-----------|------------|-------------|---------------------------| |
NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------|-------------|---------------------------| |

defaulthello-node8080http://192.168.49.2:31848
🏃 Starting tunnel for service hello-node.
------------------------------------------------------------
NAMESPACENAMETARGET PORTURL
------------------------------------------------------------
defaulthello-nodehttp://127.0.0.1:52309
------------------------------------------------------------
正通过默认浏览器打开服务 default/hello-node… ❗ Because you are using a Docker
driver on darwin, the terminal needs to be open to run it.

并且浏览器会为我们打开当前应用程序服务页面

在这里插入图片描述

四、启用插件

  1. 使用 minikube addons list 查看当前所有支持的插件

在这里插入图片描述

  1. 启动一个插件 minikube addons enable metrics-server

启动成功会有提示

▪ Using image k8s.gcr.io/metrics-server/metrics-server:v0.6.1 
🌟  启动 'metrics-server' 插件
  1. 使用 kubectl get pod,svc -n kube-system 命令,查看创建的 Pod 和 Service

  2. 也可以使用 minikube addons disable metrics-server 命令来禁用插件

五、删除集群

  1. 上面我完成了创建集群服务,那么怎么删除呢?请看下面的删除命令:

kubectl delete service hello-node
kubectl delete deployment hello-node

  1. 可以使用stop 停止Minikube 虚拟机

minikube stop

  1. 删除 Minikube 虚拟机(VM)

minikube delete

总结

本节我们学习如何使用 Minikube 和 Katacoda 在 Kubernetes 上运行一个程序应用。Katacoda 提供免费的浏览器内 Kubernetes 环境。

Logo

开源、云原生的融合云平台

更多推荐