Kubernetes(K8s)学习笔记

devtools/2024/12/23 3:40:47/

一、引言

Kubernetes(简称K8s)是一个开源的容器编排和管理平台,由Google主导开发,旨在自动化容器化应用程序的部署、扩展和管理。K8s以其强大的功能、高度的可扩展性和广泛的社区支持,已成为现代云原生应用架构的核心组件。

二、核心概念

  1. Pod:Pod是K8s中最小的可部署的计算单元,通常包含一个或多个容器。这些容器共享存储、网络等资源,并作为一个整体被调度和管理。

  2. Node:Node是K8s集群中的工作节点,负责运行Pod。每个Node都包含运行容器所需的运行时环境(如Docker)。

  3. Service:Service是K8s中定义的一组Pod的逻辑集合和访问它们的策略。Service允许你访问一组Pod,而无需关心具体有哪些Pod在运行,以及它们的位置。

  4. Label:Label是键值对,用于组织和选择集群中的对象。你可以通过Label来选择性地应用策略、监控和管理对象。

  5. Namespace:Namespace是将集群资源划分为多个隔离部分的机制。每个Namespace都有自己的资源和服务,彼此互不干扰。

  6. Deployment:Deployment是K8s中用于声明式更新应用程序的API对象。它描述了Pod的副本数量、更新策略等,并自动处理Pod的创建、删除和滚动更新。

  7. ConfigMapSecret:ConfigMap用于存储非敏感的配置信息,如配置文件、环境变量等;而Secret则用于存储敏感信息,如密码、令牌等。

三、集群架构

K8s集群通常由以下组件组成:

  • Master节点:负责管理集群的状态,包括API Server、Scheduler、Controller Manager等核心组件。
  • Worker节点:负责运行Pod,包括kubelet、kube-proxy等组件。
  • etcd:一个分布式键值存储,用于存储集群的元数据。

四、常用命令

  1. kubectl:K8s的命令行工具,用于与集群交互。

    • kubectl get pods:列出所有Pod。
    • kubectl describe pod <pod-name>:查看Pod的详细信息。
    • kubectl apply -f <yaml-file>:应用YAML配置文件中的资源定义。
    • kubectl delete pod <pod-name>:删除Pod。
  2. YAML配置文件:K8s使用YAML文件来定义资源(如Pod、Service、Deployment等)。一个典型的Deployment YAML文件示例如下:

Yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: my-deployment
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: my-image:latestports:- containerPort: 80

五、高级主题

  1. 持久化存储:K8s支持多种持久化存储选项,如Persistent Volumes(PV)和Persistent Volume Claims(PVC),用于管理Pod的存储需求。

  2. 网络:K8s提供了灵活的网络模型,允许Pod之间以及Pod与外部世界进行通信。常见的网络插件包括Calico、Flannel等。

  3. 服务发现与负载均衡:K8s通过Service和Ingress实现服务发现和负载均衡,使得应用程序能够高效地接收和处理外部请求。

  4. CI/CD集成:K8s与多种CI/CD工具(如Jenkins、GitLab CI等)集成,支持自动化构建、测试和部署流程。

六、学习建议

  1. 动手实践:理论学习是基础,但真正掌握K8s需要大量的实践。建议搭建一个本地的K8s集群(如使用Minikube或Kind),并尝试部署和管理各种资源。

  2. 阅读官方文档:Kubernetes的官方文档非常全面且详细,是学习的最佳资源之一。

  3. 参与社区:加入K8s的社区(如Slack、GitHub等),与其他开发者交流经验,解决遇到的问题。

  4. 关注行业动态:K8s是一个快速发展的项目,不断有新的功能和改进。保持对行业动态的关注,有助于及时了解最新的技术趋势和最佳实践。

七、总结

Kubernetes是一个功能强大且复杂的容器编排平台,它提供了丰富的功能和灵活的架构,能够满足各种应用场景的需求。通过不断学习和实践,你可以逐步掌握K8s的核心概念和操作技巧,为构建高效、可扩展的云原生应用打下坚实的基础。


http://www.ppmy.cn/devtools/144572.html

相关文章

PC寄存器(Program Counter Register) jvm

在JVM&#xff08;Java虚拟机&#xff09;中&#xff0c;PC寄存器&#xff08;Program Counter Register&#xff09;扮演着至关重要的角色&#xff0c;它是JVM执行引擎的核心组成部分之一。以下是PC寄存器在JVM中的具体角色和职责&#xff1a; 指令执行指针&#xff1a; PC寄存…

2024年港澳台华侨生联考师范类院校录取情况来

导读 师范类大学一直是在港澳台华侨生联考中&#xff0c;最受瞩目的学校类型之一&#xff0c;今天我们就跟大家一块来盘点一下2024年的港澳台联考中&#xff0c;师范类大学的录取分数线情况。&#xff08;景于行提示您&#xff1a;我们给您提供的分数线数据真实可靠&#xff0…

【01-数据库面试】

数据库的join查询是SQL语言中一个非常重要的概念&#xff0c;它允许我们从多个表中检索数据。在实际应用中&#xff0c;数据往往分散在不同的表中&#xff0c;而join查询则提供了一种将这些分散的数据组合在一起的方法。本文将详细介绍join查询的类型、语法以及应用场景。 Join…

二百七十九、ClickHouse——用Kettle对DWD层清洗数据进行增量补全

一、目的 由于ODS层表数据会因为各种原因缺失部分&#xff0c;所以对缺失的数据进行补全 二、实施步骤 2.1 确认补全策略 比如使用使用前一周同期的历史数据进行补齐 2.2 SQL语句 select generateUUIDv4() as id, a2.device_no, t4.source_device_type, t4.sn, t4.mode…

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好&#xff0c;今天给大家分享一个开源的自托管虚拟浏览器项目Neko&#xff0c;旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;提供…

sqlilabs第三十关到第三十五关靶场攻略

第三十关 第三十关和二十九关差不多&#xff0c;将单引号换成双引号 查询表名&#xff0c;字段名&#xff0c;数据 ?id1&id-2" union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- ?id1&id-2" …

【YashanDB知识库】如何处理yasql输入交互模式下单行字符总量超过限制4000字节

现象 在yasql执行sql语句后报错&#xff1a;YASQL-00021 input line overflow (>4000 byte at line 4) 原因 yasql在交互模式模式下单行字符总量限制4000字节&#xff0c;超出该限制即报错。 交互式模式下&#xff0c;yasql会显示一个提示符&#xff0c;通常是 SQL>…

C语言数据库管理系统示例:文件操作、内存管理、错误处理与动态数据库设计 栈和堆的内存分配

C语言的管理数据库完整的小型系统示例&#xff1a; #include <stdio.h> // 引入标准输入输出库&#xff0c;提供printf等功能 #include <assert.h> // 引入断言库&#xff0c;用于调试时检查条件 #include <stdlib.h> // 引入标准库&#xf…