Kubernetes(K8s)学习笔记

ops/2024/12/21 17:30:18/

一、引言

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/ops/143814.html

相关文章

第N7周:调用Gensim库训练Word2Vec模型

文章目录 一、准备工作1.安装Gensim库2.对原始语料分词 二、训练Word2Vec模型三、模型应用1.计算词汇相似度2.找出不匹配的词汇3.计算词汇的词频 四、总结 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、…

Java 中的 Button 详解

在 Java 图形用户界面&#xff08;GUI&#xff09;编程中&#xff0c;Button&#xff08;按钮&#xff09;是一个常用的组件&#xff0c;它允许用户通过点击来触发特定的操作。本文将深入探讨 Java 中的Button&#xff0c;包括其创建、使用方法、事件处理以及在不同场景下的应用…

基于Spring Boot的高校素拓分管理系统

一、系统背景与目的 随着高校教育的不断发展&#xff0c;素质拓展活动在大学生培养中扮演着越来越重要的角色。为了更好地管理和记录学生的素质拓展学分&#xff0c;提高管理效率&#xff0c;降低管理成本&#xff0c;开发一套基于Spring Boot的高校素拓分管理系统显得尤为重要…

TCP套接字通信与守护进程

目录 TCP socket API 详解 代码实现TCP通讯 服务端 客户端 Task 守护进程 守护进程 前台与后台 Linux进程间关系 ​编辑 设置为独立会话setsid daemon接口 为什么需要设置umask 会话ID与组ID TCP的相关机制 下图是基于TCP协议的客户端/服务器程序的一般流程: 数…

web网页端使用webSocket实现语音通话功能(SpringBoot+VUE)

写在前面 最近在写一个web项目&#xff0c;需要实现web客户端之间的语音通话&#xff0c;期望能够借助webSocket全双工通信的方式来实现&#xff0c;但是网上没有发现可以正确使用的代码。网上能找到的一个代码使用之后只能听到“嘀嘀嘀”的杂音 解决方案&#xff1a;使用Jso…

记一次mysql故障排除和硬盘扩容

问题发现 某天早上发现我的博客突然不能访问了。简单看了一下可能是数据库连接出了问题。这台服务器比较节约&#xff0c;网站和数据库都放在一个机器上。讲道理不该出现数据库连接问题的。 解决思路 首先需要熟悉mysql各个文件保存位置 项目位置日志保存位置/var/log/mysq…

【自用】通信内网部署rzgxxt项目_02,前端pipeCloud部署(使用 nginx 部署 + NSSM 控制非窗口运行)

做完这些工作之后&#xff0c;不要忘记打开 Windows Server 的防火墙端口&#xff0c;8181、8081、8080、22、443、1521 做完这些工作之后&#xff0c;不要忘记打开 Windows Server 的防火墙端口&#xff0c;8181、8081、8080、22、443、1521 做完这些工作之后&#xff0c;不要…

TCP Analysis Flags 之 TCP Fast Retransmission

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…