目录

  1. 1. 前言
  2. 2. 基础
  3. 3. 环境搭建
    1. 3.1. Kind 搭建
    2. 3.2. 配置 kubectl
  4. 4. kubectl 命令行工具
  5. 5. 部署应用

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

Kubernetes

2026/2/10 Dev
  |     |   总文章阅读量:

前言

参考:

https://github.com/bfengj/Cloud-Security/blob/main/Kubernetes/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md

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