首页 > 其他分享 >K8S 学习和运用

K8S 学习和运用

时间:2024-12-31 19:56:57浏览次数:1  
标签:容器 kube Kubernetes 节点 学习 nginx 运用 K8S Pod

前沿

Kubernetes 的核心概念

1. 容器编排的意义

Kubernetes 解决了以下问题:

  • 容器的运行管理:需要管理多个容器实例,保证它们在多个服务器上稳定运行。
  • 服务发现与负载均衡:让不同的服务可以找到彼此,并在负载较高时均衡分配流量。
  • 自动扩展:根据流量或资源使用情况动态扩展或缩减容器实例。
  • 故障自愈:如果某个容器或服务器故障,Kubernetes 能自动恢复。
  • 持续部署:方便应用升级并支持无缝回滚。

2. Kubernetes 的基本概念

(1) 集群(Cluster)

  • 一个 Kubernetes 集群由多个服务器(节点)组成。
  • 主节点 (Master Node):负责控制和管理整个集群。
  • 工作节点 (Worker Node):负责运行容器。

(2) Pod

  • Pod 是 Kubernetes 中最小的部署单元,表示运行中的一组容器。
  • 每个 Pod 通常包含一个容器,但也可以包含多个紧密相关的容器。

(3) 节点(Node)

  • Node 是运行 Pod 的实际服务器(虚拟机或物理机)。
  • 每个 Node 上都会运行一个 kubelet 进程,负责与主节点通信。

(4) Service

  • Service 是对外暴露的访问入口,负责将流量分发到一组 Pod。
  • 类型
    • ClusterIP:默认类型,仅供集群内部访问。
    • NodePort:通过每个节点的固定端口暴露服务。
    • LoadBalancer:通过云服务商的负载均衡器暴露服务。

(5) Ingress

  • Ingress 是一种高级路由规则,可以通过域名或 URL 路由流量到服务。

(6) Volume

  • 用于解决容器存储的临时性问题。即使容器重启,数据也可以保留。

(7) ConfigMap 和 Secret

  • ConfigMap:用于管理非敏感的配置信息(如环境变量)。
  • Secret:用于管理敏感信息(如密码、密钥)。

3. Kubernetes 的核心组件

(1) 主节点组件
etcd:分布式键值存储,保存集群的所有状态数据。
kube-apiserver:Kubernetes 的 RESTful API 服务,处理用户请求。
kube-scheduler:调度器,负责将 Pod 分配到合适的节点。
kube-controller-manager:控制器管理组件,处理集群的自动化任务(如副本管理、节点状态监控)。
(2) 工作节点组件
kubelet:运行在每个节点上,负责管理 Pod 和容器。
kube-proxy:负责网络通信,确保 Pod 和 Service 的流量能正确转发。
容器运行时:如 Docker、containerd,用于运行容器。
(3) 插件
CNI(Container Network Interface)插件:负责网络管理(如 Flannel、Calico)。
存储插件:如 NFS、Ceph,用于支持持久化存储。

二、Kubernetes 的工作原理

1. 集群通信架构

  • 用户通过 kubectl 或 API 发送请求到 kube-apiserver
  • kube-apiserver 验证请求并写入 etcd 数据存储。
  • 调度器和控制器从 etcd 获取任务信息,并将指令下发到工作节点。

2. Pod 调度过程

  1. 用户创建一个 Deployment(定义应用的描述文件)。
  2. kube-apiserver 接收到请求并存储到 etcd。
  3. kube-scheduler 根据节点资源和策略,将 Pod 分配到某个节点。
  4. kubelet 在该节点上创建 Pod 并运行容器。

3. Service 的流量转发

  • kube-proxy 监听 Service 的变更,并将流量转发到正确的 Pod。
  • 使用 DNS 服务(如 CoreDNS)实现服务发现

 

三、Kubernetes 的实际使用

1. 部署一个简单的应用

Deployment 配置

使用 YAML 文件定义一个 Nginx 应用:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80

运行部署命令:

kubectl apply -f nginx-deployment.yaml

Service 配置

为 Nginx 创建一个暴露端口的服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: NodePort

运行部署命令:

kubectl apply -f nginx-service.yaml

2. Kubernetes 的常见操作

kubectl get pods            # 查看所有 Pod
kubectl get nodes           # 查看所有节点
kubectl get services        # 查看所有服务
kubectl describe pod <pod-name>  # 查看某个 Pod 的详细信息

查看日志

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

删除资源

kubectl delete -f nginx-deployment.yaml

 

 

然后都是 只是简单的入门K8s的 基础理念,后续还要努力连

 

标签:容器,kube,Kubernetes,节点,学习,nginx,运用,K8S,Pod
From: https://www.cnblogs.com/yf-html/p/18644713

相关文章

  • K8s之Pod调度、抢占和驱逐(K8s Pod Scheduling, Preemption, and Eviction)
    深入理解K8s的Pod调度、抢占和驱逐本篇文章分享Pod的调度、抢占和驱逐的相关概念,基本都是理论,但非常重要,经常在面试中被问到。希望能耐心看完!Kubernetes(K8s)作为一个容器编排平台,其调度(Scheduling)、抢占(Preemption)和驱逐(Eviction)机制是确保集群资源合理分配、高效使用并保证应......
  • 树形DP学习笔记(二):打家劫舍III & 监控二叉树
    参考:树形DP:打家劫舍III【基础算法精讲24】_哔哩哔哩_bilibili树形DP:监控二叉树【基础算法精讲25】_哔哩哔哩_bilibilips:笔记中的代码按本人理解整理,重思路,对比原视频中的代码稍有改动往期:树形DP学习笔记(一):树的路径问题-CSDN博客状态机DP学习笔记-CSDN博客【如果笔记......
  • 状态机DP学习笔记
    参考:买卖股票的最佳时机【基础算法精讲21】_哔哩哔哩_bilibili ps:笔记中的代码按本人理解整理,重思路,非原视频中的代码,也并非最优代码题目1:买卖股票的最佳时机II(不限交易次数)122.买卖股票的最佳时机II-力扣(LeetCode)思路:第n天结束时的利润= 第n-1天结束时的利润+......
  • html学习笔记
    1.HTML基础HTML标题定义:HTML标题是通过<h1>到<h6>标签定义的,用于创建不同级别的标题。实例:<h1>这是最重要的标题</h1><h2>次重要的标题</h2><h3>一般标题</h3><!--以此类推,直到<h6>-->HTML段落定义:HTML段落是通过<p>标签定义的,用于组织文本内容。实......
  • css学习笔记
    1.CSS基础什么是CSS?定义:CSS(层叠样式表)是一种用于描述HTML或XML文档的表现形式的语言。作用:用于设置字体、颜色、布局等视觉效果,以及动画和过渡等交互效果。CSS的作用域内联样式:直接在HTML元素的style属性中写样式,优先级最高。内部样式:在HTML文档的<style>标签中写样式,作......
  • rust学习十五.3、智能指针相关的Deref和Drop特质
     一、前言智能指针为什么称为智能指针?大概因为它所包含的额外功能。这些额外的功能使得编码或者运行时让指针看起来更有效、并体现某些“智”的特征,所以,我猜测这应该是rust发明人这么称呼此类对象为智能的原因。 据前面有关章节所述,我们知道智能指针多基于结构体(struct)扩......
  • 8天学习python笔记04
    day04进制和编码目标:了解一些常见名词背后的含义。1.python代码运行方式脚本式python3~/PyCharm软件/学习Python/4.1.py源文件上右键----点击runxx即可运行交互式1、cmd进入命令行,输入python回车,即可进入交互式环境2、输入print("helloworld")回车,即可运行3......
  • k8s部署milvusdb
    环境:Os:Centos7前提条件,使用到的组件需要提前部署好:kafka(单点,包含zookeeper):https://www.cnblogs.com/hxlasky/p/18615374etcd(单点):https://www.cnblogs.com/hxlasky/p/18641819minio(单点):https://www.cnblogs.com/hxlasky/p/18643317 1.创建namespacekubectlcr......
  • 【AIGC】超完整的Stable Diffusion 学习应用指南
    StableDiffusion是什么?StableDiffusion目前唯一能实现精准控制生成图像的本地化部署成熟AI绘画工具。在设计工作中可以广泛应用于人像生成、电商营销设计、游戏动漫设计、三维渲染等各种领域。接下来我们先来看一个视频大概了解一下StableDiffusion生成图片的过程,有......
  • 【WPF学习】第五十四章 关键帧动画
    【WPF学习】第五十四章关键帧动画 到目前为止,看到的所有动画都使用线性插值从起点到终点。但如果需要创建具有多个分段的动画和不规则移动的动画。例如,可能希望创建一个动画,快速地将一个元素滑入到视图中,然后慢慢地将它移到正确位置。可通过创建两个连续的动画,并使用Beg......