前言
参考:
https://cn.kubeblocks.io/docs/preview/user-docs/installation/prepare-a-local-k8s-cluster/
https://zhuanlan.zhihu.com/p/8518707020
https://kubernetes.io/zh-cn/docs/reference/kubectl/quick-reference/
基础
Kubernetes 又称 k8s,是 Google 在 2014 年开源的一个用来管理容器的平台

是一个用于自动化部署、扩展和管理容器化应用程序的开源系统
k8s 主要由以下核心组件组成:
- etcd 保存了整个集群的状态
- API Server 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制
- Controller Manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
- Scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
- Kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
- Container Runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI)
- Kube-proxy 负责为 Service 提供 Cluster 内部的服务发现和负载均衡
环境搭建
主机是 MacOS
前置工具:Docker、kubectl(命令行工具)
有三种轻量级工具可以本地创建 k8s 集群:
- Minikube:Minikube 支持在本地机器的虚拟机或容器中运行单节点的 Kubernetes 集群
- K3d:k3d 是一个轻量级工具,它在 Docker 容器中运行 k3s(一个轻量的 Kubernetes 发行版)
- Kind:Kind 是 Kubernetes IN Docker 的缩写。它在 Docker 容器中运行 Kubernetes 集群,非常适合在本地进行 Kubernetes 测试
Kind 搭建
那我们选择使用 Kind 进行搭建
brew install kind
通过 Kind 创建 k8s 集群:
kind create cluster --name mykindcluster
该命令将创建一个单节点的 k8s 集群,运行在 Docker 容器中
检查集群是否启动
kubectl get nodes

如果要配置多节点集群,则可以通过配置文件:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
role: control-plane
role: worker
role: worker
kind create cluster --name multinode-cluster --config kind-config.yaml
删除集群
kind delete cluster --name mykindcluster
配置 kubectl
为了使 kubectl 能够管理 Kind 集群,需要将 Kind 集群的配置添加到 kubectl 的配置文件中:
kind get kubeconfig > ~/.kube/config
kubectl 命令行工具
先配置一下自动补全
brew install bash-completion
source <(kubectl completion zsh) # 在 zsh 中设置当前 shell 的自动补全
echo '[[ $commands[kubectl] ]] && source <(kubectl completion zsh)' >> ~/.zshrc # 在你的 zsh shell 中永久地添加自动补全
然后就开始学习使用 kubectl 吧
部署应用
创建一个简单的 nginx 部署
kubectl create deployment nginx --image=nginx
然后创建一个服务来暴露 nginx
kubectl expose deployment nginx --type=LoadBalancer --port=80