k8s kubernetes

news2024/12/18 18:49:59

文章目录

    • 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

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

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

相关文章

uniapp中vuex(全局共享)的应用

一、Vuex概述 1.1 官方解释 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 它采用集中式存储管理 应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化 - Vuex 也集成到 Vue 的官方调试工具 devtools extension&#xff0c;提供了诸…

React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等

须知 1Next.js 官网(英文)Next.js by Vercel - The React Framework2Next.js 文档(中文)简介 | Next.js 中文文档3React官网(中文)https://react.docschina.org/learn4Ant Design组件总览组件总览 - Ant Design5tailwindcss类名大全 官网英Justify Content - TailwindCS…

【十进制整数转换为其他进制数——短除形式的贪心算法】

之前写过一篇用贪心算法计算十进制转换二进制的方法&#xff0c;详见&#xff1a;用贪心算法计算十进制数转二进制数&#xff08;整数部分&#xff09;_短除法求二进制-CSDN博客 经过一段时间的研究&#xff0c;本人又发现两个规律&#xff1a; 1、不仅仅十进制整数转二进制可…

企业内训|阅读行业产品运营实战训练营-某运营商数字娱乐公司

近日&#xff0c;TsingtaoAI公司为某运营商旗下数字娱乐公司组织的“阅读行业产品运营实战训练营”在杭州落下帷幕。此次训练营由TsingtaoAI资深互联网产品专家程靖主持。该公司的业务骨干——来自内容、市场、业务、产品与技术等跨部门核心岗位、拥有8-10年实战经验的中坚力量…

pinctrl子系统学习笔记

一、背景 cpu的gpio引脚可以复用成多个功能&#xff0c;如可以配置成I2C或者普通GPIO模式。配置方式一般是通过写引脚复用的配置寄存器&#xff0c;但是不同芯片厂商配置寄存器格式内容各不相同&#xff0c;设置引脚复用无法做到通用且自由的配置&#xff0c;只能在启动初始化…

免费开源了一个图床工具 github-spring-boot-starter

文章目录 第一步&#xff0c;新建一个SpringBoot项目第二步&#xff0c;在pom文件里面引入jar包第三步&#xff0c;配置你的github信息github.authorization1、进入github官网&#xff0c;登录账号&#xff0c;点击头像&#xff0c;选择setting2、选择[Developer Settings](htt…

JVM系列之内存区域

每日禅语 有一位年轻和尚&#xff0c;一心求道&#xff0c;多年苦修参禅&#xff0c;但一直没有开悟。有一天&#xff0c;他打听到深山中有一古寺&#xff0c;住持和尚修炼圆通&#xff0c;是得道高僧。于是&#xff0c;年轻和尚打点行装&#xff0c;跋山涉水&#xff0c;千辛万…

自动驾驶AVM环视算法--python版本的俯视碗型投影模式

c语言版本和算法原理的可以查看本人的其他文档。《自动驾驶AVM环视算法--3D碗型投影模式的exe测试工具》本文档进用于展示部分代码的视线&#xff0c;获取方式网盘自行获取&#xff08;非免费介意勿下载&#xff09;&#xff1a;链接: https://pan.baidu.com/s/1STjUd87_5wDk_C…

【并发容器】源码级ConcurrentHashMap详解(java78)

1. ConcurrentHashMap 为什么要使用ConcurrentHashmap 在多线程的情况下&#xff0c;使用HashMap是线程不安全的。另外可以使用Hashtable&#xff0c;其是线程安全的&#xff0c;但是Hashtable的运行效率很低&#xff0c;之所以效率低下主要是因为其实现使用了synchronized关…

程序设计考题汇总(四:SQL练习)

文章目录 查询结果限制返回行数 查询结果限制返回行数 select device_id from user_profile LIMIT 2;

Alan Chhabra:MongoDB AI应用程序计划(MAAP) 为客户提供价值

MongoDB全球合作伙伴执行副总裁 Alan Chhabra 每当有人向我问询MongoDB&#xff0c;我都会说他们很可能在不觉之间已经与MongoDB有过交集。事实上&#xff0c;包括70%财富百强在内的许多世界领先企业公司都在使用MongoDB。我们在MongoDB所做的一切都是为了服务客户&#xff0c…

centos使用mkisofs构建无人值守镜像(附官方学习文档)

安装mkisofs yum install -y mkisofs 挂载镜像并确认 并拷贝文件(/mnt 为我们的工作目录) 1.3 准备自动应答文件(保存为 ins.ks) 修改系统引导 实际上就是添加inst.ks 这个引导参数 传递应答文件 传统模式引导

jenkins pipeline打包流程

Jenkins Pipeline 是 Jenkins 提供的一种用于持续集成和持续交付&#xff08;CI/CD&#xff09;的脚本化流程工具。它允许你通过编写一个 Jenkinsfile 文件来定义整个构建、测试和部署的流程。本文介绍打包springcloud项目&#xff0c;react项目为docker镜像 文章目录 1.项目结…

【容器】k8s学习笔记原理详解(十万字超详细)

Pod详解 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少Pause容器&#xff0c;这是每个Pod都会有的一个根容器&#xff0c;它的作用有两个&#xff1a; 可以以它为依据&am…

用.Net Core框架创建一个Web API接口服务器

我们选择一个Web Api类型的项目创建一个解决方案为解决方案取一个名称我们这里选择的是。Net 8.0框架 注意&#xff0c;需要勾选的项。 我们找到appsetting.json配置文件 appsettings.json配置文件内容如下 {"Logging": {"LogLevel": {"Default&quo…

多音轨视频使用FFmpeg删除不要音轨方法

近期给孩子找宫崎骏动画&#xff0c;但是有很多是多音轨视频但是默认的都是日语&#xff0c;电视上看没办法所以只能下载后删除音轨文件只保留中文。 方法分两步&#xff0c;先安装FFmpeg在转文件即可。 第一步FFmpeg安装 FFmpeg是一个开源项目&#xff0c;包含了处理视频的…

Ubuntu22.04切换gcc版本教程

在编译安装程序的时候,由于gcc版本过高,导致编译无法通过,需要降低gcc版本。 一、安装gcc版本 根据自己的需求安装gcc版本。 sudo apt update sudo apt install gcc-10 g++-10二、切换gcc版本 sudo update-alternatives --install /usr/bin/gcc gcc

[SZ901] JTAG合并功能(类似FPGA菊花链)

SZ901 JTAG支持将JTAG端口组合&#xff0c;最多将四个JTAG变成一个 设置如下 Vivado 识别结果如下 两块板子&#xff0c;变成一组&#xff0c;&#xff0c;可以同时抓取信号&#xff0c;调试&#xff01; SZ901 已上架淘宝&#xff0c;搜素“SZ901”哦

【收藏】Cesium 限制相机倾斜角(pitch)滑动范围

1.效果 2.思路 在项目开发的时候&#xff0c;有一个需求是限制相机倾斜角&#xff0c;也就是鼠标中键调整视图俯角时&#xff0c;不能过大&#xff0c;一般 pitch 角度范围在 0 至 -90之间&#xff0c;-90刚好为正俯视。 在网上查阅了很多资料&#xff0c;发现并没有一个合适的…

如何解决samba服务器共享文件夹不能粘贴文件

sudo vim /etc/samba/smb.conf在samba的配置文件中增加一个选项 writable yes重启Samba服务以使更改生效&#xff1a; sudo service smbd restart