AWS Kubernetes 工作坊:Kubernetes 核心概念详解

AWS Kubernetes 工作坊:Kubernetes 核心概念详解

aws-workshop-for-kubernetes AWS Workshop for Kubernetes aws-workshop-for-kubernetes 项目地址: https://gitcode.com/gh_mirrors/aw/aws-workshop-for-kubernetes

前言

在 AWS Kubernetes 工作坊中,我们已经成功搭建了一个 Kubernetes 集群。现在,让我们深入了解 Kubernetes 的核心概念,这些知识将帮助你更好地管理和运维 Kubernetes 环境。

Kubernetes 命令行工具 kubectl

kubectl(发音为"cube control")是与 Kubernetes API Server 交互的主要命令行工具。API Server 运行在集群的主节点上,是整个 Kubernetes 系统的"大脑"。

Kubernetes 平台通过一系列抽象概念来描述集群的期望状态,包括运行的应用程序、工作负载、容器镜像、网络资源等。这些抽象概念都映射到 Kubernetes API 对象上。

基础操作

查看集群节点

要查看集群中的所有节点,可以运行:

kubectl get nodes

输出示例:

NAME                                            STATUS    ROLES     AGE       VERSION
ip-192-168-160-85.us-west-2.compute.internal    Ready     <none>    10m       v1.10.3

创建第一个 Pod

Pod 是 Kubernetes 中最小的可部署单元。让我们创建一个运行 Nginx 的 Pod:

kubectl run nginx --image=nginx

查看部署状态:

kubectl get deployments

查看运行中的 Pod:

kubectl get pods

查看 Pod 详情

获取特定 Pod 的详细信息:

kubectl describe pod <pod-name>

这个命令会显示 Pod 的完整状态,包括:

  • 运行在哪个节点上
  • 使用的容器镜像
  • 资源分配情况
  • 事件日志

深入理解 Pod

Pod 基础概念

Pod 是 Kubernetes 中最小的可部署单元,它是一个或多个容器的逻辑集合。Pod 中的容器共享:

  • 网络命名空间(可以通过 localhost 互相访问)
  • 存储卷
  • IPC 命名空间

通过 YAML 创建 Pod

更推荐的方式是使用 YAML 文件定义 Pod:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

创建 Pod:

kubectl apply -f pod.yaml

访问 Pod 中的服务

可以使用端口转发来访问 Pod 中的服务:

kubectl port-forward <pod-name> 8080:80

然后在浏览器中访问 http://localhost:8080 即可看到 Nginx 的欢迎页面。

资源管理与 QoS

资源请求与限制

Kubernetes 允许为容器设置 CPU 和内存的请求(request)和限制(limit):

  • 请求:容器运行所需的最小资源量
  • 限制:容器能使用的最大资源量

示例配置:

resources:
  limits:
    memory: "200Mi"
    cpu: 2
  requests:
    memory: "100Mi"
    cpu: 1

QoS 等级

Kubernetes 根据资源设置分配三种 QoS 等级:

  1. Guaranteed(最高优先级):

    • 所有容器都设置了内存和 CPU 限制
    • 请求值等于限制值(或未设置请求值)
  2. Burstable(中等优先级):

    • 至少一个容器设置了内存或 CPU 请求
    • 不满足 Guaranteed 条件
  3. BestEffort(最低优先级):

    • 容器没有设置任何资源请求或限制

资源不足时的行为

  • 当节点内存不足时:

    • BestEffort Pod 最先被终止
    • 然后是 Burstable Pod
    • Guaranteed Pod 最后被终止
  • 当容器超过内存限制时:

    • 容器会被终止(OOMKilled)
    • 如果 Pod 支持重启,kubelet 会重启它

实践建议

  1. 生产环境:为关键服务设置 Guaranteed QoS
  2. 开发环境:可以使用 Burstable 或 BestEffort
  3. 资源设置
    • 通过监控确定合理的请求值
    • 限制值应略高于预期峰值
  4. 调试技巧
    • 使用 kubectl logs 查看容器日志
    • 使用 kubectl exec 进入容器调试
    • 使用 kubectl describe 查看详细状态

清理资源

完成实验后,记得删除创建的资源:

kubectl delete deployment/nginx
kubectl delete pod <pod-name>

总结

通过本教程,我们学习了 Kubernetes 的核心概念和基本操作,包括:

  • 使用 kubectl 管理集群
  • Pod 的创建和管理
  • 资源请求和限制的设置
  • QoS 等级及其影响

这些基础知识是使用 Kubernetes 的基石,掌握它们将帮助你更好地部署和管理容器化应用。

aws-workshop-for-kubernetes AWS Workshop for Kubernetes aws-workshop-for-kubernetes 项目地址: https://gitcode.com/gh_mirrors/aw/aws-workshop-for-kubernetes

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏鹃咪Healthy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值