【云计算•云原生】4.云原生之什么是Kubernetes

news/2024/11/23 23:35:49/

文章目录

    • Kubernetes概念
    • Kubernetes核心概念
      • 集群
      • pod
      • ConfigMap
    • Kubernetes架构
      • master节点的组件
      • worker节点组件
    • Kubernetes网络架构
      • 内部网络
      • 外部网络
    • k8s各端口含义

Kubernetes概念

K8S就是Kubernetes,Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s。

它是一个为容器化应用提供集群部署和管理的开源工具,由 Google 开发。通过k8s可以使用配置文件轻松管理上千台机器。

k8s的部署配置文件和docker的dockerfile很类似,其内容描述了整个部署过程。

Kubernetes核心概念

集群

由多个节点组成的、共同对外提供服务的一个节点组,可添加或删除节点

pod

K8S 调度、管理的最小单位,一个 Pod 可以包含一个或多个容器,每个 Pod 有自己的虚拟IP。一个工作节点可以有多个 pod,主节点会考量负载自动调度 pod 到哪个节点运行。

如果一组应用紧耦合,那么他们应该在一个pod中编排

ConfigMap

微服务上线时根据不同服务需要有一些可变配置,为了实现对微服务各个节点的灵活配置,k8s内置支持微服务的配置configmap,将配置信息写入configmap,然后configmap以环境变量的方式注入到pod中,pod中的容器可以访问这些配置。

Kubernetes架构

架构中分为master/worker两个部分
在这里插入图片描述

在这里插入图片描述

master节点的组件

  • etcd: 负责存储k8s集群的状态数据、节点数据等
  • API server: 是操作etcd的唯一接口
  • Scheduler: 负责资源调度
  • Controler Manager: 集群状态的协调控制者,维护集群状态

worker节点组件

  • Controller Runtime: 下载镜像和容器的组件

  • kubelet: 与master节点上API server交互,负责管理worker节点上的组件,运行在集群中每个节点node上。注意他是一个进程而不是组件。

  • pod: K8S 调度、管理的最小单位,一个 Pod 可以包含一个或多个容器,每个 Pod 有自己的虚拟IP。一个工作节点可以有多个 pod,主节点会考量负载自动调度 pod 到哪个节点运行。

  • kube-proxy: 对pod进行寻址和负载均衡

用户操作 k8s 集群一般是通过 kubectl命令行工具或者 dashboard;

Pod 之间进行通讯是通过集群内部的覆盖网络 Overlay Network,外部流量想要进入集群访问 Pod 则是通过负载均衡 Load Balander 设备进行。

Kubernetes网络架构

k8s有四层网络,从上到下分别是

  • 外部接入网络(NodePort/LoadBalancer/Ingress)
  • service网络
  • pod网络
  • node节点网络

内部网络

节点网络用来保证master和worker,以及worker节点之间能够做正常寻址和通讯

pod之间通过pod网络(在节点网络之上)寻址和通信

不同节点之间的pod访问可以通过路由或者其他方式访问;节点的ip可能会随着关机挂起而改变,需要service网络维护。

worker节点中的kubelet将信息传给master节点中的etcd来实现服务注册。

kube-DNS和kube-proxy获取etcd中的信息来实现服务发现。

kube-DNS保存serviceName->ClusterIP的信息。(service服务的ip叫ClusterIp)

ClusterIP并不是一成不变的,ServiceName是唯一的。

Kube-Proxy保存CluserIP->PodIP的信息。这样两层可以实现POD 在集群之间的网络连接。kube-proxy是集群中每个节点node上运行的网络代理。

外部网络

  • NodePort

将service暴露在节点网络上

  • LoadBalancer

将service暴露在节点网络上+负载均衡

  • Ingress

如果需要暴露在节点网络中的服务有很多,仅仅使用 load balancer 的话成本是很高的。Ingress 可以等价于反向代理或者网关,它的主要作用就是反向路由,它可以将多个 k8s 内部的服务同时暴露出去但仅需一个 load balancer。Ingress 还有一些其他功能如动态路由更新、安全认证、日志监控等。

k8s各端口含义

  • port: 是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service
  • nodePort: 是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service
  • targetPort: 是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器
  • containerPort: 是pod内部容器的端口,targetPort映射到containerPort
    在这里插入图片描述

http://www.ppmy.cn/news/69584.html

相关文章

LeetCode笔记:Biweekly Contest 104

LeetCode笔记:Biweekly Contest 104 1. 题目一 1. 解题思路2. 代码实现 2. 题目二 1. 解题思路2. 代码实现 3. 题目三 1. 解题思路2. 代码实现 4. 题目四 1. 解题思路2. 代码实现 比赛链接:https://leetcode.com/contest/biweekly-contest-104 1. 题目…

超级详细Git操作 之git log 命令的参数详解

git log命令主要用于查看Git版本演变历史(也就是提交历史),同时根据追加的参数和选项不同,也会有不同的展示效果。 但默认git log命令显示出的x效果实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命…

Web基础 ( 四 ) JavaScript 介绍

4.JavaScript 4.1.概念 4.1.1.什么是JavaScript 通过浏览器中内置的解析器,逐行解析执行的一种脚本语言 主要是处理系统使用者的行为逻辑的 4.1.2.与Java语言的比较 代码格式不同 ​ Java与HTML无关的格式 ​ JavaScript代码是一种文本字符格式,可…

260道网络安全常见面试题汇总(附答案解析+配套资料)

以下为网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作。 注:所有的资料都整理成了PDF,面试题和答案将会持续更新,因为无论如何也不可能覆盖所有的面试题。 目录 一、渗透测试…

Rocky Linux 9.2 正式版发布 - RHEL 下游免费发行版

Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导。 请访问原文链接:https://sysin.org/blog/rocky-linux-9/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 以社区方式驱动的企业 Linux Rocky Linux 是…

现在Java和大数据开发还能学来找工作吗?

卷是必然的,不止java和大数据,也不止IT这个行业~ 这两个方向其实都是不错的方向,java虽然卷,但是技能在手也不怕。大数据的发展前景也是不容小觑的。关键就在于你未来想发展的方向以及个人的兴趣 首先先给你吃一颗定心丸&#x…

Sonar Qube代码质量检测工具安装及基本使用

Sonar介绍 Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。 Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,…

【论文阅读】基于鲁棒强化学习的无人机能量采集可重构智能表面

只做学习记录,侵删原文链接 article{peng2023energy, title{Energy Harvesting Reconfigurable Intelligent Surface for UAV Based on Robust Deep Reinforcement Learning}, author{Peng, Haoran and Wang, Li-Chun}, journal{IEEE Transactions on Wireless Comm…