minikube从入门到精通系列之一:部署minikube详细步骤
- 一、认识Minikube
- 二、Minikube核心知识点
- 三、minikube官方地址
- 四、minikube 启动
- 五、minikube的配置需求
- 六、Mac安装minikube
- 七、CenotOS7上安装minikube
- 八、启动集群
- 九、与集群交互
- 十、部署应用程序
- 1.Service
- 2.LoadBalancer
- 3.Ingress
- 十一、管理集群
K8s相关知识可以阅读博主以下几篇技术博客:
- K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点
- K8s系列之:Pod的基本用法
- k8s系列之:kubectl子命令详解一
- k8s系列之:kubectl子命令详解二
- 更多K8s知识点详见博主K8s系列文章
一、认识Minikube
- Minikube是一个开源工具,用于在本地开发环境中快速搭建一个单节点的Kubernetes集群。
- 它支持多种虚拟化技术,在不同平台上都可以运行,如VirtualBox、Hyper-V、KVM等。
- 通过Minikube,开发人员可以方便地在本地环境中测试、构建和部署应用程序,并尝试不同的Kubernetes功能和配置。
- Minikube提供了一些命令行工具,如kubectl,用于与Kubernetes集群进行交互,可以在本地开发中提高效率和便捷性。
二、Minikube核心知识点
-
Kubernetes集群的搭建和管理:Minikube帮助用户在本地环境中快速搭建和管理一个Kubernetes集群,从而提供了一个容器化应用程序的运行环境。
-
容器和镜像的管理:Minikube可以运行和管理多个容器,用户可以使用Docker Hub等资源库来查找和下载不同的镜像。
-
kubectl命令行工具的使用:Minikube内置了kubectl命令行工具,用户可以使用该工具与Kubernetes集群进行交互,比如创建和管理应用程序、服务、节点等。
-
资源配额和限制的配置:Minikube允许用户配置集群中的资源配额和限制,以确保应用程序的稳定性和可伸缩性。
-
Kubernetes对象的管理:Minikube支持管理Kubernetes中的不同对象,如Pod、Service、Deployment等,以帮助用户更好地理解和使用Kubernetes。
-
网络配置和服务发现:Minikube提供了网络配置和服务发现的功能,以便应用程序可以在Kubernetes集群中互相通信和发现彼此的服务。
-
日志和监控:Minikube支持应用程序的日志和监控,以帮助用户追踪和分析应用程序的运行状况。
三、minikube官方地址
minikube官方地址:
- 添加链接描述
四、minikube 启动
minikube 是本地 Kubernetes,专注于让 Kubernetes 易于学习和开发。
您所需要的只是 Docker(或类似兼容的)容器或虚拟机环境,并且只需一个命令即可使用 Kubernetes:minikube start
五、minikube的配置需求
minikube的配置需求:
- 2 个或更多 CPU
- 2GB 可用内存
- 20GB 可用磁盘空间
- 网络连接
- 容器或虚拟机管理器,例如:Docker、QEMU、Hyperkit、Hyper-V、KVM、Parallels、Podman、VirtualBox 或 VMware Fusion/Workstation
六、Mac安装minikube
要使用二进制下载在 x86-64 macOS 上安装最新的 minikube 稳定版本:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
七、CenotOS7上安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
sudo rpm -Uvh minikube-latest.x86_64.rpm
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
八、启动集群
从具有管理员访问权限的终端(但未以 root 身份登录),运行:
minikube start
如果 minikube 无法启动,请参阅驱动程序页面以获取设置兼容容器或虚拟机管理器的帮助。
九、与集群交互
如果您已经安装了 kubectl,现在可以使用它来访问闪亮的新集群:
kubectl get po -A
或者,minikube 可以下载适当版本的 kubectl,您应该能够像这样使用它:
minikube kubectl -- get po -A
您还可以通过将以下内容添加到 shell 配置中来让您的生活更轻松:
alias kubectl="minikube kubectl --"
最初,某些服务(例如存储配置程序)可能尚未处于“运行”状态。这是集群启动期间的正常情况,很快就会自行解决。为了进一步了解集群状态,minikube 捆绑了 Kubernetes 仪表板,让您可以轻松适应新环境:
minikube dashboard
十、部署应用程序
1.Service
创建示例部署并将其公开在端口 8080 上:
kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080
这可能需要一些时间,但是当您运行时,您的部署很快就会显示:
kubectl get services hello-minikube
访问此服务的最简单方法是让 minikube 为您启动 Web 浏览器:
minikube service hello-minikube
或者,使用 kubectl 转发端口:
kubectl port-forward service/hello-minikube 7080:8080
您的应用程序现已在 http://localhost:7080/ 上提供。
您应该能够在应用程序输出中看到请求元数据。尝试更改请求的路径并观察变化。同样,您可以执行 POST 请求并观察输出中显示的正文。
2.LoadBalancer
要访问 LoadBalancer 部署,请使用“minikubetunnel”命令。这是一个部署示例:
kubectl create deployment balanced --image=kicbase/echo-server:1.0
kubectl expose deployment balanced --type=LoadBalancer --port=8080
在另一个窗口中,启动隧道以为“平衡”部署创建可路由 IP:
minikube tunnel
要查找可路由的 IP,请运行以下命令并检查 EXTERNAL-IP 列:
kubectl get services balanced
您的部署现已在 :8080 上可用
3.Ingress
启用入口插件:
minikube addons enable ingress
以下示例创建简单的 echo-server 服务和一个用于路由到这些服务的 Ingress 对象。
kind: Pod
apiVersion: v1
metadata:
name: foo-app
labels:
app: foo
spec:
containers:
- name: foo-app
image: 'kicbase/echo-server:1.0'
---
kind: Service
apiVersion: v1
metadata:
name: foo-service
spec:
selector:
app: foo
ports:
- port: 8080
---
kind: Pod
apiVersion: v1
metadata:
name: bar-app
labels:
app: bar
spec:
containers:
- name: bar-app
image: 'kicbase/echo-server:1.0'
---
kind: Service
apiVersion: v1
metadata:
name: bar-service
spec:
selector:
app: bar
ports:
- port: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- http:
paths:
- pathType: Prefix
path: /foo
backend:
service:
name: foo-service
port:
number: 8080
- pathType: Prefix
path: /bar
backend:
service:
name: bar-service
port:
number: 8080
---
应用内容
kubectl apply -f https://storage.googleapis.com/minikube-site-examples/ingress-example.yaml
等待ingress address
kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress nginx * <your_ip_here> 80 5m45s
Docker 桌面用户注意事项:
要使 Ingress 正常工作,您需要打开一个新的终端窗口并运行 minikube 隧道,并在以下步骤中使用 127.0.0.1 代替 <ip_from_above>。
现在验证入口是否正常工作
$ curl <ip_from_above>/foo
Request served by foo-app
...
$ curl <ip_from_above>/bar
Request served by bar-app
...
十一、管理集群
暂停 Kubernetes,而不影响已部署的应用程序:
minikube pause
取消暂停已暂停的实例:
minikube unpause
停止集群:
minikube stop
更改默认内存限制(需要重新启动):
minikube config set memory 9001
浏览易于安装的 Kubernetes 服务目录:
minikube addons list
创建运行旧版 Kubernetes 的第二个集群:
minikube start -p aged --kubernetes-version=v1.16.1
删除所有 minikube 集群:
minikube delete --all