Colima与minikube
概述
Colima:
在macOS中,想使用docker区别于Linux,所有推荐都是让安装Docker Desktop,Docker Desktop又笨又耗资源还不稳定,经常出现各种奇怪的问题,所以为了解决在macOS上像Linux那样优雅的使用docker,Colima便诞生了。Colima是一个开源的工具,用于在 macOS 上提供 Docker 兼容的容器化环境。它建立在 Lima 的基础上,通过创建一个轻量级的 Linux 虚拟机(VM),来支持 Docker 容器运行。Colima 特别适合 macOS 用户,尤其是在 Apple Silicon(M1、M2)处理器上,因为它能够解决 Docker Desktop 在 macOS 上的兼容性和性能问题。
minikube:
现在项目规模越来越大,动不动就要用到集群的概念,方便运维中的管理控制,Kubenetes俗称k8s,在此领域的领军者,那么如果你想熟悉学习k8s,实际生产环境肯定不会让你来练手的,minikube诞生,非常适合初学者,你可以在自己的设备中安装minikube,用于本地运行Kubenetes集群,它可以在单台主机上模拟一个完整的 Kubernetes 集群,非常适合开发、测试和学习 Kubernetes。
好了,现在拥有了colima与minikube,那么你的设备就能模拟集群,来看看集群是如何实现与管理的吧。
MacOS中的安装
#安装colima
brew install colima
#安装minikube
brew install minikube
Colima启动
#启动colima
colima start
#启动前进入配置,配置成功后推出直接启动
colima start --edit
#终端走代理(临时)
export https_proxy=http://127.0.0.1:代理端口
#查看代理是否配置
echo https_proxy
echo http_proxy
echo all_proxy
#指定代理启动,这样会让docker使用代理,避免拉取不下来镜像问题。前提要开启镜像,终端(terminal)中配置了代理
colima start --env HTTPS_PROXY=http://127.0.0.1:代理端口 --env HTTP_PROXY=http://127.0.0.1:代理端口 --env NO_PROXY=localhost,127.0.0.1
#挂载硬盘,如果在macos中有外接硬盘,一般colima只会读取本地硬盘,需要在配置文件或启动时添加参数
colima start --mount /Volumes/YourDrive
#在使用colima docker之前,需要先安装dockerctl
brew install dockerctl
#colima中的docker
docker ps -a
docker images
docker pull xxx
docker run -d xxx
minikube启动
#启动minikube
minikube start
```
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
```
#出现以上信息,代表minikube启动成功,需要注意的是国内环境大概率会启动失败
#需要terminal终端走代理,与前面提到的colima中的docker走代理
Minikube 状态字段解释
type:Controle Plane :表示当前minikube集群是一个单节点的控制平面,包含kubernetes的主节点功能
host:Running:表示minikube的虚拟机或容器正在运行
kubelet:Rinning:kubelet是kubernetes核心组件之一,负责在每个节点上管理Pod的生命周期
apiserver:Running:API Server是kubernetes的中心组件,负责接收和处理所有客户端(如 kubectl)的请求
kubeconfig:Configured:表示kubectl已正确配置与minikube集群通信的上下文,你可以直接使用kubectl操作minikube集群
Kubernetes的关键概念
1. Cluster(集群):Kubernetes 集群由一个控制平面和多个节点组成。
• 控制平面:负责集群的管理,包括调度和管理容器。通常由 etcd、API server、scheduler、controller manager 等组件组成。
• 节点:运行应用程序的工作负载。每个节点上运行一个 Kubelet(管理该节点)和一个容器运行时(例如 Docker 或 Containerd)。
2. Pod:Kubernetes 中最小的部署单元。一个 Pod 可以包含一个或多个容器,容器共享网络和存储。
3. Service(服务):用于将网络流量路由到一组指定的 Pod。它们提供持久的 IP 和 DNS 名称,确保 Pod 动态变化时仍能访问到服务。
4. Deployment(部署):用于管理无状态的应用,负责定义和控制 Pod 的副本数、滚动更新等。它可以帮助你以声明方式定义应用状态。
5. ConfigMap 和 Secret:用于配置数据管理。ConfigMap 用于存储非敏感数据,Secret 用于存储敏感信息,如 API 密钥和密码。
6. Namespace(命名空间):用于将集群中的资源划分为逻辑组。适合多租户环境,便于资源隔离和管理。
待完善...