k8s-基础知识(Service,NodePort,CusterIP,NameSpace,资源限制)

news2024/11/18 22:32:52

Node

Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。

Annotations

原文链接
Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象,Annotations 则是用来记录一些附加信息,用来辅助应用部署、安全策略以及调度策略等。比如 deployment 使用 annotations 来记录 rolling update 的状态。

Label

原文链接
Label 是识别 Kubernetes 对象的标签,以 key/value 的方式附加到对象上(key 最长不能超过 63 字节,value 可以为空,也可以是不超过 253 字节的字符串)。
Label 不提供唯一性,并且实际上经常是很多对象(如 Pods)都使用相同的 label 来标志具体的应用。
Label 定义好后其他对象可以使用 Label Selector 来选择一组相同 label 的对象(比如 ReplicaSet 和 Service 用 label 来选择一组 Pod)。Label Selector 支持以下几种方式:

  • 等式,如 app=nginx 和 env!=production
  • 集合,如 env in (production, qa)
  • 多个 label(它们之间是 AND 关系),如 app=nginx,env=test

Service

它提供了服务程序和外部的各种组件通信的能力:
1 Service 有固定的IP和端口
2 Service 背后是pod在工作
Kubernetes 会给Service分配一个静态 IP 地址,Service自动管理、维护后面动态变化的 Pod 集合,当客户端访问 Service,它就根据某种策略,把流量转发给后面的某个 Pod。

在这里插入图片描述
Service使用了iptables技术,每个节点上的kube-proxy组件自动维护iptables规则。
客户端不需要关心Pod的具体地址,只要访问Service的固定IP地址。
Service会根据iptables规则转发请求给后端的Pod。
支持多种services:

  • NodePort: NodePort服务监听节点上的一个端口并将请求转发给Pod。把Service通过端口号暴露到集群中的节点(Node)主机。
  • ClusterIP:CusterIP是默认的Service的IP地址,是一个虚拟IP地址(类似Swarm,分配了VIP)。只能kubernetes集群内部访问使用,外部网络无法ping通。服务在cluster内部创建一个虚拟IP,以实现不同服务之间的通信,比如一组前端服务器到一组后端服务器。
  • LoadBalancer:LoadBalancer需要搭配云厂商(第三方)的负载均衡器来使用。它在支持的云供应商中为我们的应用程序提供一个负载平衡器。
  • ExternalName:ExternalName的服务将service映射到 DNS CNAME(不常用)。

NodePort

NodePort 服务可以将节点上的端口映射到pod上。
这里理清三个端口:
1 pod会有一个端口 这个pod服务的端口
2 Service会有一个端口,Service的端口,背后可能有多个pod,相当于是一个统一入口。
3 这个节点上提供外部访问有一个端口,节点端口只能在一个有效的范围内,默认情况下是30,000到32,767
在这里插入图片描述

#监控节点的变化
kubectl get pods -w
apiVersion: v1
kind: Service
metadata: 
  name: myapp-service
spec:
  type: NodePort
  ports:
    - port: 80 #这个端口必须要有
      targetPort: 80 #默认和port一致
      nodePort: 30008 #默认随机一个端口
  selector:
    app: myapp #这个选择器会取选对应的pod作为这个Service的pod

CusterIP

web应用程序一般有不同种类的部分,所有单元都分配了一个IP地址。但是这些IP不是静态的。这些组件随时可能出现故障,并且创建新的pod。因此,不能依赖这些IP地址进行应用程序之间的内部通信。
每个service都在集群内获得一个IP和分配给它的名称,这是其他路径访问该service时应使用的名称。这种类型的service称为ClusterIP。

apiVersion: v1
kind: Service
metadata: 
  name: backend
spec:
  type: ClusterIP #默认就是ClusterIP
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: myapp
    type: backend

Namespace

Kubernetes在集群首次启动时,自动创建默认名称空间default namespace。Namespace 主要起到限制起到隔离资源的作用。

Kubernetes在内部创建了一组pod和service,如网络方案、DNS服务等。为了将这些与用户隔离开来,防止意外删除或修改这些服务,Kubernetes在集群启动时创建的另一个名为kube-system的名称空间下创建了这些服务。

Kubernetes自动创建的第三个名称空间被称为kube-public,创建应向所有用户开放的资源的地方。

将Kubernetes集群用于企业或生产目的时,可能要考虑使用名称空间。例如,在开发和生产环境中使用同一个集群,但同时在它们之间隔离资源,可以为它们各自创建一个不同的名称空间。在开发环境中工作时,就不会意外地修改生产环境中的资源。

apiVersion: v1
kind: Namespace
metadata:
  name: dev
#通过yml方式创建
kubectl create -f namespace-dev.yml
#通过命令创建
kubectl create namespace dev
#查看命令空间,查看当前集群有哪些命名空间
kubectl get ns

集群内部可以通过下面这个规则进行通信
在这里插入图片描述
一个名字空间里的资源也可以简单地以name通信。如果要连接另一个名字空间的服务,必须将名称空间的名称附加到服务的名称上。例如,对于默认名称空间中的web pod,要连接到dev环境或名称空间中的数据库,使用servicename.namespace.svc.cluster.local格式:dbservice.dev.svc.cluster.local。

#获取某个namespace下的pods
kubectl get pods --namespace=dev
#下面这两条命令都是一样的都是获取所有pod对应的命令空间
kubectl get pods --all-namespaces
kubectl get pods -A

资源配额

kubectl create -f resource-quota.yml

resource-quota.yml

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-quota
  namespace: dev #指定限制的namespace
spec:
  hard:
    pods: "10" #限制pod数量最多是10个
    requests.cpu: "4" #限制cpu申请的时候为4个
    requests.memory: 5Gi #限制内存
    limits.cpu: 10 #使用限制
    limits.memory: 10Gi #使用限制

这里申请和使用是有区别的,安装Request取申请但是使用的时候最大可以到limits

切换命名空间

#将当前的命令空间切换为dev $(kubectl config current-context)获取当前的命令空间
kubectl config set-context $(kubectl config current-context) --namespace=dev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1407002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解JS语法与变量

深入理解JS语法与变量 前言初识JavaScriptJavaScript的语言风格和特性 JavaScript的书写位置认识输出语句学会处理报错REPL 环境 变量定义变量改变变量变量的合法命名变量的默认值变量的常见错误等号表示赋值同时声明多个变量 变量声明提升注意事项 结语 前言 在现代Web开发中…

Vue构建项目断点调试过程问题总结

Vue构建项目断点调试过程问题总结 问题背景 前端开发过程中,碰到问题时需要debug,快速分析和解决问题。一般除了console.log的方式打印日志外,更方便直观的方式就是打断点debug。本文对vue项目debug过程可能碰到的问题进行总结,…

Kafka(二)原理详解

一 、kafka核心总控制器(Controller) 在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。 作用:leader副…

FireAlpaca:轻量级、免费的Mac/Win绘图软件,让你的创意如火燃烧!

FireAlpaca是一款轻量级、免费的绘图软件,适用于Mac和Win系统,让你的创作过程更加快捷、简便。无论是绘制漫画、插图、设计作品还是进行简单的图片编辑,FireAlpaca都能满足你的需求。 首先,FireAlpaca具有直观友好的用户界面&…

国辰智企资产管理系统:实现资产精细化管理的首选

在市场竞争日益激烈、金融环境不断变化的背景下,有效的资产管理已成为企业保持竞争优势和实现财务目标的关键。传统资产管理方法已显不足以适应现代经济环境的快速变化。为了迎接这一挑战,越来越多企业纷纷采用先进的资产管理系统,以提高效率…

【面试突击】微信亿级朋友圈的社交系统设计

微信亿级朋友圈的社交系统设计 先来说一下业务需求吧: 每个用户可以发朋友圈,可以点赞,评论可以设置权限,不看某些人朋友圈、不让某些人看你的朋友圈可以刷朋友圈中其他人的动态 对于这样的系统设计,主要从业务来考虑…

Springboot项目启动报错:Command line is too long问题解决

启动项目报错:Error running ‘xxxxxxxx’: Command line is too long. Shorten command line for ‘xxxxxxxx’ or also for Application default configuration 方法一 点击提示中的:default:然后在弹出窗口中选择:JAR xxxx xxx&#xff0…

搭建k8s集群实战(一)系统设置

1、架构及服务 Kubernetes作为容器集群系统,通过健康检查重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用性。 …

手势识别MATLAB代码

手势识别是智能设备常用的需求, 下面我们用MATLAB来识别手部的形态: 主程序main.m clc;clear all;close all;%清除命令行和窗口 imimread(DSC05815.JPG); [skin,bwycbcr,w,h] hand_segmentation(im); im1bwycbcr; % se strel(ball,[1 1 1;1 1 1;1 1 1]); im1 imdilate(im…

HarmonyOS鸿蒙学习笔记(22)@Builder实战

Builder标签是一种更轻量的UI元素复用机制,下面通过一个简单的例子来具体说明: 比如如下布局效果:上面是一个轮播的Swiper,下面是一个Grid 布局代码如下: build() {Navigation() {Scroll() {Column({ space: CommonConstants.CO…

html+css浮动小练习

以下是代码&#xff1a; <!DOCTYPE html> <!-- 2024.1.23 --> <html lang"en"> <head><meta charset"UTF-8"><title>浮动布局练习</title><style>.leftfix{float: left;}.rightfix{float:right;}/* 问题…

Leetcode—24. 两两交换链表中的节点【中等】

2023每日刷题&#xff08;八十七&#xff09; Leetcode—24. 两两交换链表中的节点 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x),…

如何进行H.265视频播放器EasyPlayer.js的中性化设置?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;可支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff0c;能支持WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#…

HTML 入门手册(二)

目录 HTML 入门手册(一) 10-表单 11-input标签 11.1文本框 (text) 11.2密码框 (password) 11.3单选按钮 (radio) 11.4复选框 (checkbox) 11.5普通按钮 11.6提交按钮 (submit) 11.7重置按钮 (reset) 11.8隐藏域 (hidden) 11.9文件上传 (file) 11.10数字输入 (numbe…

Power Apps 向Power Automate传一个数组参数

Power Apps传Power Automate数组参数 背景Power Apps传参方法画布开发我们现在power apps中设置一个集合**ArrCollect**准备一个按钮 Power Automate接收总结画布流 背景 我们通常会从Power Apps界面传递参数给Flow中&#xff0c;但是很多时候仅仅是一个字符串类型的已经不适用…

超融合系统疑难故障定位与解决实践 3 例(含信创技术栈)

当 IT 系统出现故障&#xff0c;问题定位往往是运维人员最头疼的环节。尤其是超融合系统&#xff0c;由于整体涉及的技术栈比较复杂&#xff0c;且有越来越多的用户基于信创环境进行部署&#xff0c;非常考验厂商和技术人员的专业能力&#xff1a;厂商研发和售后工程师不仅应能…

web安全学习笔记【07】——非http\https抓包

#知识点&#xff1a; 1、Web常规-系统&中间件&数据库&源码等 2、Web其他-前后端&软件&Docker&分配站等 3、Web拓展-CDN&WAF&OSS&反向&负载均衡等 ----------------------------------- 1、APP架构-封装&原生态&H5&flutter…

2024年了你还在用百度翻译?手把手教会你使用AI翻译!一键翻译网页和PDF文件!

一些结论 沉浸式翻译是一款免费的AI驱动的双语网页翻译扩展工具。 主要功能包括&#xff1a;一键网页翻译&#xff0c;PDF翻译&#xff0c;输入框翻译&#xff0c;鼠标悬停翻译等多种翻译场景。 目前核心功能均免费使用。 沉浸式翻译是什么&#xff1f; 沉浸式翻译是一款免费的…

低噪声放大器LNA 之 噪声系数

​ 一、噪声系数的定义 在定义噪声系数之前&#xff0c;先看一个放大器输入输出端信噪比&#xff08;信号功率与噪声功率之比&#xff0c;写作SNR&#xff09; 对比图&#xff1a; ​​从上图可用看出&#xff0c;从输入端到输出端&#xff0c;信号和噪声功率都得到了放大&…

5G网络变压器应用领域

5G网络变压器在多个应用领域发挥着重要作用。以下是一些主要的应用领域&#xff1a; 1. **通信基站&#xff1a;** 5G网络变压器在通信基站中扮演关键角色。它们用于转换电力&#xff0c;确保通信基站设备的正常运行。稳定的电力供应对于保障高速、高频率的5G通信至关重要。 …