概述

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(命名空间):用于将集群中的资源划分为逻辑组。适合多租户环境,便于资源隔离和管理。

待完善...