kubernetes(2)

news2024/11/19 16:46:29

pod管理

应用部署

上传测试镜像

[root@k8s1 docker]# docker push reg.westos.org/library/myapp:v1
[root@k8s1 docker]# docker push reg.westos.org/library/myapp:v2

创建自助式pod(生产不推荐)

[root@k8s2 ~]# kubectl run demo --image=myapp:v1

[root@k8s2 ~]# kubectl get pod -o wide    //使用 wide 输出格式,可以展示更多的列,包括 Node(Pod 所在的节点)、IP、状态、重启次数、版本等信息

查看pod详情

[root@k8s2 ~]# kubectl describe  pod demo        //获取指定 Pod 的各项详细信息,包括容器的状态、日志、事件等

 删除pod

[root@k8s2 ~]# kubectl delete  pod demo

 创建控制器(推荐)

[root@k8s2 ~]# kubectl create deployment myapp --image=myapp:v1 --replicas=3
//创建一个 Deployment 对象的命令,用于管理 Pod,管理的pod副本数为3

控制器自动维护pod副本数

[root@k8s2 ~]# kubectl get pod
[root@k8s2 ~]# kubectl get deployments.apps    //返回所有 Deployments 的名称、可用副本数、所需副本数、更新策略等详细信息

[root@k8s2 ~]# kubectl delete  pod myapp-67984c8646-4j6fs
[root@k8s2 ~]# kubectl get deployments.apps
[root@k8s2 ~]# kubectl get pod

 在远程pod中执行命令

[root@k8s2 ~]# kubectl exec myapp-67984c8646-nwtl9 -- ls /usr/share/nginx/html
//在 Pod myapp-678fcbc488-gqdgk 中执行命令 ls /usr/share/nginx/html

扩容pod数量

[root@k8s2 ~]# kubectl  scale deployment myapp --replicas=6
[root@k8s2 ~]# kubectl get pod

 缩容pod数量

[root@k8s2 ~]# kubectl  scale deployment myapp --replicas=3
[root@k8s2 ~]# kubectl get pod

通过service暴露pod

[root@k8s2 ~]# kubectl expose deployment myapp --port=80 --target-port=80
//kubectl expose deployment myapp 命令创建了一个 Service,并将 Deployment myapp 暴露在集群内部的网络中。
--port 参数指定了 Service 监听的端口号,这里为 80;
--target-port 参数指定了 Service 转发流量到 Deployment 中的 Pod 时所使用的端口号,这里同样为 80。

 查看svc详情

[root@k8s2 ~]# kubectl describe  svc myapp
//获取了名为 myapp 的 Service 的详细信息。该命令输出的信息包括:
Service 的名称、命名空间、标签等基本信息;
Service 的类型(ClusterIP、NodePort、LoadBalancer 等);
Service 的端口信息,包括监听的端口号、协议(TCP/UDP)等;
Service 关联的 Pod 信息,包括选择器、关联的 Pod 的 IP 地址、副本数等;
Service 的 Endpoints 信息,包括关联的 Pod 的 IP 地址和端口号。

[root@k8s2 ~]# curl 10.96.20.8
[root@k8s2 ~]# curl 10.96.20.8/hostname.html

service自动发现pod扩容与缩容,自动更新endpoints,实现对应用的负载均衡

service默认使用clusterip类型,只能在集群中访问

nodeport类型,可以在集群外部访问

[root@k8s2 ~]# kubectl edit svc myapp

[root@k8s2 ~]# kubectl get svc

访问集群任意节点+端口

更新应用版本

[root@k8s2 ~]# kubectl set image deployment/myapp myapp=myapp:v2    //将 myapp 容器的镜像更新为 myapp:v2
[root@k8s1 docker]# curl  192.168.81.11:31902

查看应用历史版本

[root@k8s2 ~]# kubectl rollout history deployment myapp    //用于查看 Deployment myapp中所有副本集的升级历史记录

回滚

[root@k8s2 ~]# kubectl rollout undo deployment myapp --to-revision=1

删除应用

[root@k8s2 ~]# kubectl delete  deployments.apps myapp
[root@k8s2 ~]# kubectl delete svc myapp
[root@k8s2 ~]# kubectl get ns

集群通过namespace来做资源隔离,默认操作的资源都指向default

编写yaml文件

获取帮助

[root@k8s2 pod]# kubectl explain pod.spec.containers

获取yaml模版

 

[root@k8s2 pod]# kubectl run demo --image nginx --dry-run=client  -o yaml > pod.yaml
//--dry-run=client:使用客户端模式,即不会真正创建 Pod,仅会返回 YAML 格式的定义文件
-o yaml:以 YAML 格式输出定义文件
> pod.yaml:将输出的 YAML 定义文件保存到当前目录下的 pod.yaml 文件中
执行该命令会生成一个名为 pod.yaml 的文件,其中包含了一个定义 nginx 镜像 Pod 的 YAML 文件


[root@k8s2 pod]# vim pod.yaml
apiVersion: v1        //Kubernetes API的版本
kind: Pod            //资源类型,这里是pod
metadata:            //元数据对象,用于述 Pod 的基本信息,例如标签,名称等。
  labels:
    run: demo
  name: demo
spec:            //制定了pod的具体配置
  containers:            //定义了 Pod 中的容器
  - image: nginx        // 指定容器使用的镜像,这里使用的是nginx。
    name: demo
    imagePullPolicy: IfNotPresent        //指定镜像拉取策略为IfNotPresent,表示如果本地已经存在相同版本的镜像,则不会从镜像仓库中拉取

 

创建pod

[root@k8s2 pod]# kubectl create -f pod.yaml    //根据pod.yaml文件中的定义来创建一个新的 Kubernetes Pod对象

 查看详情

[root@k8s2 pod]# kubectl get pod -o wide
[root@k8s2 pod]# kubectl describe  pod demo
[root@k8s2 pod]# kubectl get pod demo -o yaml
 
//kubectl get pod -o wide命令会以表格形式显示所有的 Pod 对象,其中包括名称、状态、所在节点、IP地址、版本等信息。-o wide选项可以扩展输出内容,显示更多信息。

kubectl describe pod demo命令会以文本形式展示指定名称为 demo 的 Pod 对象的详细信息,包括 Pod 的元数据、各容器的信息、生命周期事件、存储和网络配置等。

kubectl get pod demo -o yaml命令会以 YAML 格式展示指定名称为 demo 的 Pod 对象的详细信息,包括 Pod 的元数据、各容器的信息、存储和网络配置等。这种格式的输出可以用于创建或修复 Pod 对象。

 示例

1、

2、

3、

  • Guaranteed,保证级别:Pod 中的容器都设置了 CPU 和 Memory 的 requests 和 limits,并且这些值相等。此时,如果资源满足所有 Guaranteed 类别的 Pod 的需求,则这些 Pod 会被同时调度在集群中,保证它们的运行。
  • Burstable,突发级别:Pod 中至少有一个容器设置了 CPU 和 Memory 的 requests 和 limits,但是这些值不相等。此时,如果资源足够,那么这些 Pod 会被相应地调度,但是它们的性能可能会受到限制,因为它们能够使用的资源是有上限的。
  • BestEffort,尽力级别:Pod 中的容器没有设置 CPU 和 Memory 的 requests 和 limits。此时,这些容器会尽力地获取集群中未被占用的资源,但是它们的资源使用是无法保证的,因为它们需要等待集群中已分配的所有资源使用完毕才能够获得更多的资源。

 4、

5、

[root@k8s2 pod]# kubectl apply -f pod.yml           //更新该 Pod 的配置         
[root@k8s2 pod]# kubectl delete  -f pod.yml         //删除pod

init容器

[root@k8s2 pod]# vim init-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app.kubernetes.io/name: MyApp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox
    command: ['sh', '-c', "until nslookup myservice.default.svc.cluster.local; do echo waiting for myservice; sleep 2; done"]

[root@k8s2 pod]# kubectl apply -f init-pod.yaml
[root@k8s2 pod]# kubectl get pod

 

在init容器没有成功运行之前,主容器不会被运行

添加svc定义

[root@k8s2 pod]# vim myservice.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

svc解析成功后,init容器退出,主容器运行

[root@k8s2 pod]# yum install -y bind-utils
[root@k8s2 pod]# dig -t A myservice.default.svc.cluster.local. @10.96.0.10

探针

存活探针

[root@k8s2 pod]# vim liveness-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: nginx
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

[root@k8s2 pod]# kubectl apply -f liveness-pod.yaml

就绪探针

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

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

相关文章

iZotope RX 10for Mac /Windows- 音频修复的终极解决方案

随着音乐和电影制作的复杂性日益增加,高质量的音频修复变得越来越重要。iZotope RX 10,作为业界公认的专业音频修复软件,为你提供了强大、精确的工具,让你的声音变得清晰、纯净。 在音频修复领域,iZotope RX 10凭借其…

【vue3】组件间通讯

1.上级传给下级 父级组件&#xff1a; <ReqTab ref"crontabRef" hide"openCronfalse" fill"crontabFill" :expression"expression" :method"method" ></ReqTab> 函数中赋值&#xff1a; 子组件&#xff1a; …

IP协议(上)

目录 一、初步认识IP协议 二、认识IP地址 三、协议报头格式 1.报头和有效载荷分离 2.20字节的固定数据 四、网段划分 1.一个小例子 2.认识IP地址的划分 3.数据的传输过程 4.特殊的IP地址 5.通信运营商 &#xff08;1&#xff09;通信运营商的作用 &#xff08;2&a…

Unity可视化Shader工具ASE介绍——9、整理节点让复杂的Shader条理更清晰

阿赵的Unity可视化Shader工具ASE介绍目录 大家好&#xff0c;我是阿赵。   继续介绍Unity可视化Shader编辑工具ASE。上一篇介绍UI特效Shader的时候&#xff0c;连接了一个Shader 这个shader不是很复杂&#xff0c;但看起来也有点乱七八糟的。接下来通过对这个shader的节点连…

微信小程序设计之主体文件app-json-pages

一、新建一个项目 首先&#xff0c;下载微信小程序开发工具&#xff0c;具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后&#xff0c;注册小程序账号&#xff0c;具体注册方法&#xff0c;可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

Linux生产者消费者模型

生产者消费者模型 生产者消费者模型生产者消费者模型的概念生产者消费者模型的特点生产者消费者模型优点 基于BlockingQueue的生产者消费者模型基于阻塞队列的生产者消费者模型模拟实现基于阻塞队列的生产消费模型 生产者消费者模型 生产者消费者模型的概念 生产者消费者模式就…

ChatGPT AIGC自动生成多条件复杂计算函数

在Excel中经常会遇到多条件判断,根据不同的条件与内容显示不同的值。 例如: 需要给每个员工根据入职年限,员工等级,满意度等维度给员工发年终奖。 这在职场办公过程中经常要面临的一个问题。如销售额达到多少,取多少提成,如学生成绩在什么区间是设置为优秀还是良好等一…

Windows开启telnet功能

打开控制面板&#xff0c;找到「程序和功能」&#xff0c;点击「启动或关闭Windows功能」 勾选「Telnet客户端」 点击确定&#xff0c;等待Windows完成设置。 然后就可以啦~ 今日金句&#xff1a; 煞笔给我退退退&#xff01;&#xff01;&#xff01;

ELK 单机安装

一丶软件下载 elasticsearch: https://www.elastic.co/downloads/past-releases kibana: https://www.elastic.co/downloads/past-releases 选择对应的版本的下载即可 二、es 安装es比较简单 rpm -ivh elasticsearch-2.4.2.rpm 修改配置文件 /etc/elasticsearch/elas…

基于SSM+Vue的体育馆管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

vue3插件开发,上传npm

创建插件 在vue3工程下&#xff0c;创建组件vue页: toolset.vue。并设置组件名称。注册全局组件。新建index.js文件。内容如下&#xff0c;可在main.js中引入index.js&#xff0c;注册该组件进行测试。![在这里插入图片描述](https://img-blog.csdnimg.cn/a3409d2cbeec41c797d5…

大数据Flink(九十九):SQL 函数的解析顺序和系统内置函数

文章目录 SQL 函数的解析顺序和系统内置函数 一、​​​​​​​SQL 函数

k8s kubernetes 1.23.6 + flannel公网环境安装

准备环境&#xff0c;必须是同一个云服务厂商&#xff0c;如&#xff1a;华为&#xff0c;阿里、腾讯等&#xff0c;不要存在跨平台安装K8S&#xff0c;跨平台安装需要处理网络隧道才能实现所有节点在一个网络集群中&#xff0c;这里推荐使用同一家云服务厂商安装即可 这里使用…

微信小程序实现类似于 vue中ref管理调用子组件函数的方式

微信小程序中确实有类似于 vue 中 ref管理子组件的方式、 这里 我给子组件定义了一个 class 只要是 css选择器拿得到的 都没什么问题 但你要保证唯一性 建议前端开发还是慎重一点 就算是不能重复也尽量用class 因为id总还是有风险的 然后 我在子组件中顶一个了一个函数 start…

AQS中lock源码解析

什么是AQS&#xff1f; 就是基于双向链表CAS实现的锁的一种机制或者方法思想。就是AbstractQueuedSynchronizer&#xff0c;是Java并发包下的一个基类基于AQS实现的同步器包括&#xff1a;ReentrantLock、CountDownLatch、Samaphone、FutureTask、ReentrantWriteLock Abstrac…

基于nodejs+vue云旅青城系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

Qt ModelViewDelegate(模型-视图-代理) 介绍和使用

一、Model (模型) 介绍 Qt Model 是 Qt 的一个重要组件&#xff0c;用于管理和展示数据。它是 Qt 的 Model/View 架构的核心部分&#xff0c;用于将数据模型与其视图相分离&#xff0c;实现数据的高效处理和可视化呈现。 Qt Model 可以理解成一组数据结构&#xff0c;其中包含…

Docker容器技术实战1

1、docker容器 docker相当于传统的货运集装箱 虚拟机&#xff08;Virtual Machine&#xff0c;VM&#xff09;是一个完整的虚拟操作系统和硬件环境。它的工作原理是通过在一台物理主机上使用虚拟化软件来创建多个虚拟机实例&#xff0c;每个实例都可以运行独立的操作系统和应用…

01-初识HTML和CSS

1.HTML与CSS 1.1.什么是HTML&#xff1f;什么是CSS&#xff1f; HTML是HyperText Markup Language(超文本标记语言) ​ 它不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;用于告诉浏览器如何构造你的页面。它可以由一系列HTML元素组合成web开发人员想要的简单或者…

扬帆起航:许战海方法论日文版正式发布

近日&#xff0c;中国头部战略咨询机构‘许战海咨询’最新研究成果《中国汽车行业新能源转型战略》行业白皮书日文版&#xff0c;即将在日本发布。同时发布的日文版核心方法论白皮书还有《主品牌进化战略》、《第二招牌增长战略》、《链主品牌&#xff1a;制造业的竞争之王》等…