k8s kubernetes

文章目录

    • CGroup
    • k8s运行时
    • k8s组件
    • k8s组件安装
    • kubeadm命令
    • kubectl命令
    • k8s官网
    • 代码

在这里插入图片描述

CGroup

在 Linux 上,控制组(CGroup)用于限制分配给进程的资源。kubelet 和底层容器运行时都需要对接控制组来强制执行 为 Pod 和容器管理资源 并为诸如 CPU、内存这类资源设置请求和限制。若要对接控制组,kubelet 和容器运行时需要使用一个 cgroup 驱动。 关键的一点是 kubelet 和容器运行时需使用相同的 cgroup 驱动并且采用相同的配置。

  • cgroupfs 驱动:cgroupfs 驱动是 kubelet 中默认的 cgroup 驱动。 当使用 cgroupfs 驱动时, kubelet 和容器运行时将直接对接 cgroup 文件系统来配置 cgroup。当 systemd 是初始化系统时, 不 推荐使用 cgroupfs 驱动,因为 systemd 期望系统上只有一个 cgroup 管理器。 此外,如果你使用 cgroup v2, 则应用 systemd cgroup 驱动取代 cgroupfs。
  • systemd cgroup 驱动: 当某个 Linux 系统发行版使用 systemd 作为其初始化系统时,初始化进程会生成并使用一个 root 控制组(cgroup),并充当 cgroup 管理器。systemd 与 cgroup 集成紧密,并将为每个 systemd 单元分配一个 cgroup。 因此,如果你 systemd 用作初始化系统,同时使用 cgroupfs 驱动,则系统中会存在两个不同的 cgroup 管理器。同时存在两个 cgroup 管理器将造成系统中针对可用的资源和使用中的资源出现两个视图。某些情况下, 将 kubelet 和容器运行时配置为使用 cgroupfs、但为剩余的进程使用 systemd 的那些节点将在资源压力增大时变得不稳定。当 systemd 是选定的初始化系统时,缓解这个不稳定问题的方法是针对 kubelet 和容器运行时将 systemd 用作 cgroup 驱动。

k8s运行时

  • CRI(Container Runtime Interface): 容器运行时接口,用来运行容器,k8s通过这个接口去兼容不同的容器,目前主要的CRI有CRI-O和containered,dockershim在k8s的1.24版本后从kubelet中剥离出来,主要由docker维护(不是亲儿子k8s也不会管了)

  • docker-shimcontainrd区别:
    kubelet --> docker-shim (在 kubelet 进程中) --> dockerd --> containerd(不启动也可运行)
    kubelet --> cri plugin(在 containerd 进程中) --> containerd

  • docker-shim:dockerAPI的适配器,1.24后k8s不再支持,可以像以前一样继续基于 Docker Engine 构建 Kubernetes,只需从内置的 dockershim 切换到外部的 cri-docker 即可。cri-dockerd即后来从k8s独立出来的dockershim。

  • containerd:containerd由docker开发,是docker用来操作runc的handler,与docker平级,docker生成的images等资源与containerd生成的images等资源不共享。cri-containerd是containerd的一个插件,用来支持k8s的cri格式。

  • CRI-O(Container Runtime Interface - OCI): k8s孵化的符合OCI标准的容器运行环境,有逐步替代其它容器技术的趋势

  • other:2018年的其它容器所占的市场份额,CoreOS rkt(12%)、Mesos(4%)

  • OCI(Open Container Initiative): 可以看做是「容器运行时」的一个标准,Ta 使用 Linux 内核系统调用(例如:cgroups 与命名空间)生成容器,按此标准实现的「容器运行时」有 runC 和 gVisor

k8s组件

在这里插入图片描述

  • kubelet:运行在cluster所有节点上,负责启动POD和容器

  • kubeadm:用于初始化cluster

  • kubectl:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件

  • Deployment: 一个Deployment对应一个Replica Set,副本集

  • Replica Sets: 一个副本集可有多个副本,副本就是pod

  • pod: 一个pod可存在多个container,这些container使用相同的ip和相同的端口段区间,一般的场景一个容器即一个服务,不需要在pod里拆分多个container

  • service: 对deployment的负载,单个节点多个备份的负载器

  • ingress: nginx反向代理,需要先安装 inginx控制器

k8s组件安装

  • 运行时安装:k8s运行时选其一,笔者不建议使用containered,目前问题太多,建议使用cri-o或cri-docker,官方教程:
    https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/

kubeadm命令

指令描述
kubeadm config print join-defaults默认配置
kubeadm config images list镜像列表
kubeadm init --config=kubeadm.yaml初始化(初始化完后需要先copy $HOME/.kube 等操作,见初始化日志)
kubeadm init --apiserver-advertise-address=172.20.167.110 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock详细见如下
–apiserver-advertise-address API server 的广播地址、,一般设置为master的ip地址 默认使用默认网关eth0关联的网络接口
–image-repository image拉取源替换为国内
–pod-network-cidr pod使用的子网? 需要有cni插件去创建网络
–cri-socket 运行环境选择 /var/run/cri-dockerd.sock 或 /var/run/containerd/containerd.sock
kubectl apply -f calico.yaml 执行脚本初始化cni
kubeadm join … --cri-socket /var/run/cri-dockerd.sock需要指定cri runtime 忘记后 kubeadm token create --print-join-command
kubectl taint nodes --all node-role.kubernetes.io/control-plane-删除所有污点
kubectl taint nodes k8s-master node-role.kubernetes.io/control-plane-删除 k8s-master 节点上的 node-role.kubernetes.io/control-plane 污点策略
kubectl taint nodes k8s-master node-role.kubernetes.io/control-plane:NoSchedule添加污点策略 NoSchedule:表示K8S将不会把Pod调度到具有该污点的Node节点上 taint格式 key:(描述)effect(NoSchedule
kubeadm token create --ttl 0master节点的token 24小时过期后,可以通过命令产生新的token
kubeadm token listmaster节点上运行命令,可查询

kubectl命令

指令描述
kubectl explain pod.spec.containers命令解释
kubectl config view当前k8s集群配置
kubectl get nodes -o wide --show-labels查看节点
kubectl get namespace kube-system命名空间
kubectl get pod --all-namespaces -o wide查看所有namespaces下的pod
kubectl get pod -n kube-system -o wide查看单个namespaces下的pod
kubectl get pod -n kube-system -o wide pod_name详情(包含CPU内存的分配)
kubectl get deployment -n kube-system -o wide副本升级版
kubectl get rs -n kube-system -o wide副本
kubectl get service -n kube-system副本访问入口(负载)
kubectl get ingress -n kube-system反向代理nginx
kubectl describe node k8s-master查看k8s-master节点详情 包含 traints…
kubectl describe namespace命名空间
kubectl describe pod -n kube-system pod_name详情
kubectl exec -it pod_name -c container_name bash进入容器
kubectl exec -it myapp-pod1 -n mypodspace bash进入pod
kubectl create namespace nmsp1创建namespace
kubectl delete namespace nmsp1删除namespace
kubectl delete pod -n kube-system web-sg删除加入的pod
kubectl create -f pod-resources.yaml创建pod
kubectl apply -f pod_web_single.yaml创建pod通过yml
kubectl delete -f pod_web_single.yaml删除加入的pod通过yml
kubectl logs -f -n namespace_name pod_name-n 命名空间
kubectl logs -f -n namespace_name -c container_name pod_name-c 容器
kubectl proxy --address=‘0.0.0.0’ --accept-hosts=‘^*$’ --port=8001内网 开启代理 dashboard (使外网能访问到) nohup ${command} >> logs/dashboard.log 2<&1 &
kubectl port-forward -n kubernetes-dashboard --address 0.0.0.0 service/kubernetes-dashboard 8080:443外网 浏览器输入 thisisunsafe
kubectl -n kubernetes-dashboard create token admin-user已生成账户但并未生成token的话用此命令

k8s官网

https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/

代码

以下是基于ruoyi spring cloud的kubernetes部署demo:
https://github.com/yuzhou152/RuoYi-Cloud-Kubernetes.git

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记072——Java中的【JUC 并发编程】

文章目录 JUC 并发编程1、什么是高并发2、Java 实现多线程的第三种方式3、sleep 和 wait 方法的区别4、synchronized 锁定的是谁&#xff1f;5、ConcurrentModificationException6、JUC 工具类7、读写锁8、线程池 JUC 并发编程 JUC 是指 Java 并发编程工具包 java.util.concu…

【报错解决】vsvars32.bat 不是内部或外部命令,也不是可运行的程序或批处理文件

报错信息&#xff1a; 背景问题&#xff1a;Boost提示 “cl” 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件时&#xff0c;   按照这篇博客的方法【传送】添加了环境变量后&#xff0c;仍然报错&#xff1a; 报错原因&#xff1a; vsvars32.bat 的路径不正…

简单配置,全面保护:HZERO审计服务让安全触手可及

HZERO技术平台&#xff0c;凭借多年企业资源管理实施经验&#xff0c;深入理解企业痛点&#xff0c;为您提供了一套高效易用的审计解决方案。这套方案旨在帮助您轻松应对企业开发中的审计挑战&#xff0c;确保业务流程的合规性和透明度。 接下来&#xff0c;我将为大家详细介绍…

使用nvm对node进行多版本管理

1.nvm下载及安装 下载链接 下载完成后&#xff0c;对文件进行解压安装&#xff0c;按照提示一步步安装&#xff0c;如果电脑上之前有安装过node&#xff0c;需要先卸载&#xff0c;再进行安装。 按照提示完成安装。 2.设置环境变量 可以现在C:\Users\name\AppData\Roamin…

【JavaEE初阶】JavaScript相应的WebAPI

目录 &#x1f332;WebAPI 背景知识 &#x1f6a9;什么是 WebAPI &#x1f6a9;什么是 API &#x1f38d;DOM 基本概念 &#x1f6a9;什么是 DOM &#x1f6a9;DOM 树 &#x1f340;获取元素 &#x1f6a9;querySelector &#x1f6a9;querySelectorAll &#x1f384…

基于MNE的EEGNet 神经网络的脑电信号分类实战(附完整源码)

利用MNE中的EEG数据&#xff0c;进行EEGNet神经网络的脑电信号分类实现&#xff1a; 代码&#xff1a; 代码主要包括一下几个步骤&#xff1a; 1&#xff09;从MNE中加载脑电信号&#xff0c;并进行相应的预处理操作&#xff0c;得到训练集、验证集以及测试集&#xff0c;每个…

SCHEMA find old payroll result

这几天原来HK客户要我帮忙看一个问题&#xff0c;在看HK雇佣条例时&#xff0c;发现又假期是取前12个月的工资&#xff0c;后来查看标准函数发现两个有用的operation&#xff0c;PLOOP与IMPRE 下图是2012年6月工资核算&#xff0c;现在循环着前面4个月。 输入 输出 2012年5月…

【ARM Trace32(劳特巴赫) 使用介绍 1 -- Trace32 debug 工具安装详细步骤】

文章目录 Trace32 工具解压查看安装手册准备安装设置安装目录指定安装目录选择安装类型:选择平台架构开始安装Trace32 应用打开使用界面Trace32 工具解压 使用 7-zip 解压两次: 查看安装手册 安装步骤按照文档中的 1、2、3 进行: 在解压文件中找到安装工具,如下: 准备…

Flux Tools 结构简析

Flux Tools 结构简析 BFL 这次一共发布了 Canny、Depth、Redux、Fill 四个 Tools 模型系列&#xff0c;分别对应我们熟悉的 ControlNets、Image Variation&#xff08;IP Adapter&#xff09;和 Inpainting 三种图片条件控制方法。虽然实现功能是相同的&#xff0c;但是其具体…

【物联网技术与应用】实验3:七彩LED灯闪烁

实验3 七彩LED灯闪烁 【实验介绍】 七彩LED灯上电后&#xff0c;7色动闪光LED模块可自动闪烁内置颜色。它可以用来制作相当吸引人的灯光效果。 【实验组件】 ● Arduino Uno主板* 1 ● USB数据线* 1 ● 7彩LED模块*1 ● 面包板*1 ● 9V方型电池*1 ● 跳线若干 【实验原…

Web 安全必读:跨站脚本攻击 (XSS) 原理与防御指南

文章目录 原理解析&#xff1a;触发方式 文件内容中的xss文件名中的xssHTTP请求中的xss其他 分类&#xff1a; 根据攻击脚本存储的方式根据脚本是否通过服务器处理根据持久性 常见的js触发标签 无过滤情况有过滤情况 xss-labs通关 level1-level10level11-level20 XSS&#x…

Set集合进行!contains判断IDEA提示Unnecessary ‘contains()‘ check

之前写过一个代码&#xff0c;用到了Set集合&#xff0c;判断了如果某个元素不存在就添加到集合中。今天翻看代码又看到了IDEAUnnecessary contains() check爆黄提示。 来一段测试代码&#xff1a; public class SetTest {public static void main(String[] args) {Set<Int…

Mapper代理开发

引入 Mybatis入门方式中&#xff0c;以下代码仍存在硬编码问题 Mapper 代理开发&#xff1a; 目的&#xff1a; 解决原生方式中的硬编码 简化后期执行sql ------下图中&#xff0c;第一段代码是原生硬编码代码块&#xff0c;第二个是引入了Mapper代理开发的代码块。 Mapper代…

abc 384 D(子数组->前缀和) +E(bfs 扩展的时候 按照数值去扩展)

D 做出来的很开心&#xff0c;好像本来就应该做出来>< 思路&#xff1a; 对于连续的子序列&#xff08;也就是 子数组&#xff09; 一般都和 前缀和 后缀和 有关系 区间[l r] 可以用 前缀 S_r -S{l-1} tar来表示。(对于两个元素等于一个数字&#xff0c;就可以枚举一个&…

【2024版】最新推荐好用的XSS漏洞扫描利用工具_xss扫描工具

工具介绍 toxssin 是一种开源渗透测试工具&#xff0c;可自动执行跨站脚本 (XSS) 漏洞利用过程。它由一个 https 服务器组成&#xff0c;它充当为该工具 (toxin.js) 提供动力的恶意 JavaScript 有效负载生成的流量的解释器。 安装与使用 1、安装需要的依赖库 git clone http…

web网页前后端交互方式

参考该文&#xff0c; 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单&#xff0c;设置method属性定义发送表单数据的方式是get还是post。 如使用get方式&#xff0c;则提交的数据会在url中显示&#xff1b;如使用post方式&#xff0c;提交…

Visual studio的AI插件-通义灵码

通义灵码 TONGYI Lingma 兼容 Visual Studio、Visual Studio Code、JetBrains IDEs 等主流 IDE&#xff1b;支持 Java、Python、Go、C/C、C#、JavaScript、TypeScript、PHP、Ruby、Rust、Scala 等主流编程语言。 安装 打开扩展管理器&#xff0c;搜送“TONGYI Lingma”&…

[C++]类的继承

一、什么是继承 1.定义&#xff1a; 在 C 中&#xff0c;继承是一种机制&#xff0c;允许一个类&#xff08;派生类&#xff09;继承另一个类&#xff08;基类&#xff09;的成员&#xff08;数据和函数&#xff09;。继承使得派生类能够直接访问基类的公有和保护成员&#xf…

【系统】Mac crontab 无法退出编辑模式问题

【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因&#xff1a;2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在 二、后续 背景 之前写过一篇&#xff1a;【系统】…

WPF系列一:窗口设置无边框

WindowStyle 设置&#xff1a;WindowStyle"None"&#xff0c;窗口无法拖拽&#xff0c;但可纵向和横向拉伸 <Window x:Class"WPFDemo.MainWindow.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x&quo…