一文掌握GitHub热门开源项目Kubernetes(Windows 11版)

云信安装大师
90
AI 质量分
11 5 月, 2025
2 分钟阅读
0 阅读

一文掌握GitHub热门开源项目Kubernetes(Windows 11版)

引言

Kubernetes(简称K8s)是Google开源的容器编排系统,已成为云原生应用的事实标准。本文将带你从零开始在Windows 11上搭建Kubernetes开发环境,让你能够快速上手这个强大的容器编排工具。

准备工作

在开始之前,请确保你的Windows 11系统满足以下要求:

  • Windows 11专业版/企业版(家庭版不支持Hyper-V)
  • 至少4GB内存(推荐8GB以上)
  • BIOS中启用虚拟化技术(VT-x)
  • 管理员权限

第一步:安装WSL2和Docker Desktop

1.1 启用WSL2功能

代码片段
# 以管理员身份打开PowerShell并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启计算机后,设置WSL2为默认版本:

代码片段
wsl --set-default-version 2

1.2 安装Docker Desktop

  1. 下载Docker Desktop for Windows
  2. 安装时勾选”使用WSL2引擎”选项
  3. 安装完成后,在设置中启用Kubernetes:

注意:首次启动可能需要较长时间下载Kubernetes镜像

第二步:验证安装

代码片段
# 检查Docker版本
docker version

# 检查Kubernetes集群状态
kubectl cluster-info

# 查看节点状态
kubectl get nodes

如果一切正常,你应该看到类似以下输出:

代码片段
NAME             STATUS   ROLES           AGE   VERSION
docker-desktop   Ready    control-plane   5m    v1.25.0

第三步:部署第一个应用

让我们部署一个简单的Nginx服务来测试集群:

代码片段
# 创建部署
kubectl create deployment nginx --image=nginx:latest

# 查看Pod状态
kubectl get pods -w

# 暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort

# 获取服务URL
minikube service nginx --url

原理说明:
create deployment:创建包含Nginx容器的部署对象
expose:创建一个Service将Pod暴露给集群外部访问
NodePort:会在30000-32767范围内分配一个端口映射到Pod的80端口

第四步:使用kubectl常用命令

代码片段
# 查看所有资源状态
kubectl get all

# 查看Pod详情(替换<pod-name>为实际名称)
kubectl describe pod <pod-name>

# 查看Pod日志
kubectl logs <pod-name>

# 进入Pod容器内部(如果容器中有shell)
kubectl exec -it <pod-name> -- bash

# 删除部署和服务
kubectl delete deployment nginx
kubectl delete service nginx

Windows特有注意事项

  1. 性能问题

    • WSL2的磁盘I/O性能较差,建议将项目文件放在Linux文件系统中(如\\wsl$\
    • Docker Desktop设置中可调整CPU和内存分配
  2. 网络问题

    • Windows防火墙可能会阻止某些端口,需要手动放行NodePort范围(30000-32767)
      代码片段
      New-NetFirewallRule -DisplayName "K8s NodePort" -Direction Inbound -LocalPort @('30000-32767') -Protocol TCP -Action Allow <br>
      
  3. 文件共享

    • Windows和Linux之间的文件权限不同,可能导致挂载卷出现问题。建议使用chmod调整权限。

Kubernetes核心概念实践练习

让我们通过一个更复杂的示例来理解Kubernetes的核心概念:

“`yaml

mysql-deployment.yaml(保存到本地文件)

apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
selector:
matchLabels:
app: mysql-app
tier: database
version: “8.0”
environment: dev
team: backend
project: demo
component: database
role: master
type: mysql

原创 高质量