当前位置: 首页 > news >正文

k8s学习笔记(一)

configMap

一般用来存储配置信息

创建configMap

从文件中获取信息创建:kubectl create configmap my-config --from-file=/tmp/k8s/user.txt

直接指定信息:

kubectl create configmap my-config01 --from-literal=key1=config1 --from-literal=key2=config2

ymal文件创建

ConfigMap的使用

为什么使用:  1,复用配置文件,可以启动多个nginx的pod,共同使用同一个pod
                        2,便于修改,维护

如何使用:

1 将ConfigMap中的数据设置为容器的环境变量

定义configmap

kubectl create configmap my-config05 --from-literal=key1=123 

2 configmap挂载

案例将名为my-config的cm挂载到pod中的/etc/config目录下,可以进入容器查看

注意:subPath: nginx.cong    #如果mountPath挂载目录之前有数据,需要在下面加上subPath,表示不会覆盖原有数据。换句话说就是指定某个文件挂载,而不是挂载全部

secret

与configmap类似

探针

种类

livenessProbe

readynessProbe

startupProbe(1.16新引入)

探测方法

ExecAction(执行命令,正确返回0,错误返回非0)、

HttpGet(访问htttp页面,正确则显示正常,错误则会在svc中的endpoints中删除对应的pod,直至下次检查成功

 TcpSocket: 通过TCP 连接来检查容器的状态。它通常用于检查容器内部的 TCP 服务是否可以正常连接。

livenessProbe

exec
        [root@master day07]# cat liveness-exec.yml
        apiVersion: v1
        kind: Pod
        metadata:
          labels:
            test: liveness
          name: liveness-exec-001
        spec:
          containers:
          - name: liveness
            image: nginx
            args:            #定义容器启动时执行的命令
            - /bin/sh
            - -c
            - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
            livenessProbe:    #指定livess检查
              exec:            #指定检查方式为执行命令
                command:
                - cat
                - /tmp/healthy    #命令成功返回0,失败返回非0,并杀死,重启
              initialDelaySeconds: 5    #在容器启动后多久开始进行首次 liveness 检查,这里是 5 秒
              periodSeconds: 5            #定义 liveness 检查的执行周期,每隔 5 秒钟执行一次。
     
  pod状态为running时,此时exec进入pod中删除/usr/nginx/html/下面的index.html,使用describe        查看pod状态会显示错误,过一会重启后有显示正常(重启pod会自动创建新的container,index.htm存在)
        
        
tcpsocket
        [root@master day07]# cat liveness-tcp.yml
        apiVersion: v1
        kind: Pod
        metadata:
          name: goproxy
          labels:
            app: goproxy
        spec:
          containers:
          - name: goproxy
            image: nginx
            ports:
            - containerPort: 80        
            livenessProbe:
              tcpSocket:
                port: 88        #定义检查端口88是否可用15s后检测失败,容器重启
              initialDelaySeconds: 15
              periodSeconds: 20

rc

(ReplicationController),老版本使用,将来(1.6版本)被禁用,不支持热更新

ReplicationController 确保在任何时候都有特定数量的 Pod 副本处于运行状态。 换句话说,ReplicationController 确保一个 Pod 或一组同类的 Pod 总是可用的。

RC通过spec.replicas字段设置期望的Pod副本数,并通过spec.template定义Pod的模板,包括容器和标签等信息,它不支持滚动更新或灰度发布

首先通过rc创建三个pod,基于nginx镜像,标签lables为app=nginx,副本数为3

查看pod状态

删除pod,测试rc是否可以维持pod个数

再次查看pod

发现pod数量不变,但是IP和node节点发生变化

rs

(replicasets)

相当于是rc的升级

RC通过spec.replicas字段设置期望的Pod副本数,并通过spec.template定义Pod的模板,包括容器和标签等信息

deployment

实际上是对rs的封装和升级,通过 ReplicaSet 来管理 Pod 的副本集。

供了对Pod副本集部署和更新的声明式配置,支持滚动更新、回滚和版本控制等功能

Deployment通过spec.replicas字段设置期望的Pod副本数,并通过spec.template定义Pod的模板,与RC和RS类似。不同之处在于,Deployment还支持spec.strategy字段,用于定义更新策略,例如滚动更新的速率和暂停条件,

其中deployment.spec.strategy.rollingUpdate下的两个重参数

maxSurge:在滚动更新期间可以创建的额外的 Pod 的最大数量或百分比,可以是一个值或百分比

maxUnavailable:滚动更新期间可以创建的额外的 Pod 的最大数量或百分比,值或百分比

deploy的更新与回滚

更新

原理,通过修改image的版本不同,curl -I ip:端口显示的nginx版本不同


查看pod创建情况,这里的镜像版本为最新

测试版本,版本为1.21.5

版本的回滚,指定版本为1.16.1

直接vim编辑配置文件修改即可

把image: nginx修改为image: nginx1.16.1,保存退出

kubectl apply -f deploy-pod.yml

此时再次测试,实现通过deployment回滚版本

版本升级与回滚类似,vim修改镜像版本即可,完成后保存退出

执行kubectl apply -f deploy-pod.yml

service

service有4中类型 ExternalName, ClusterIP, NodePort, and LoadBalancer,默认为Cluster,配置好之后只能在k8s集群内部访问,NodePort可以在集群外部访问

NodePort

此时可以在浏览器上输入192.168.199.149:32054,成功访问nginx,150,151也可以

ClusterIP

创建service

kubectl apply -f service.yml

查看svc

服务发现

service会自动通过lables发现可用的pod节点,并把节点的ip加入到endps列表中

查看svc的endpoint,把符合条件的三个pod加入到列表中

删除pod,测试service是否能自动发现新创建的pod

查看endpoints,发现service的自动发现服务正常

负载均衡

查看pod情况

为了测试负载均衡,这里修改nginx服务的html配置文件,以达到负载均衡效果

查看service

测试负载均衡

相关文章:

k8s学习笔记(一)

configMap 一般用来存储配置信息 创建configMap 从文件中获取信息创建:kubectl create configmap my-config --from-file/tmp/k8s/user.txt 直接指定信息: kubectl create configmap my-config01 --from-literalkey1config1 --from-literalkey2confi…...

自学前端——JavaScript篇

JavaScript 什么是JavsScript JavaScript是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果,增加用户与网页的交互性。 作为一种客户端语言,JavaScript可以直接嵌入HTML,并在浏览器中执行。 与HTML和CSS不…...

高考毕业季--浅谈自己感想

随着2024年高考落幕,数百万高三学生又将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去很长一段时间里,计算机科学与技术、人工智能、网络安全、软件工程等专业一…...

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 在遥感影像上人工制作分类数据集采用python+gdal库制作数据集挑选分类模型(RF、KNN、SVM、逻辑回归)选择随机森林模型建模分类遥感图像预测在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像…...

【Android面试八股文】Kotlin内置标准函数let的原理是什么?

确实,let 函数在 Kotlin 中被广泛使用,特别是在处理可空类型或者需要在对象上执行一系列操作后返回结果的场景中非常有用。 let 函数的源代码 /*** Calls the specified function [block] with `this` value as its argument and returns its result.** For detailed usage i…...

网工面试总结1

网工还是要基本会ACL、ISIS、OSPF、MPLS、QOS、GVRP、VRRP、FW、BGP、STP、IV4\6、WLAN、路由策略、策略路由、LACP等都或多或少要知道,常见的哪怕没有实战,要在ensp、cisco中练过! OSPF邻居故障,你认为是哪些原因?或者…...

[stm32]密码锁

[stm32]密码锁 需要资料的请在文章末尾获取~ ​​ 01描述 使用原件:stm32f103c8t6最小系统板x1,0.96寸OLED显示屏四角x1,4x4矩阵按键x1; 键位对应图: 1, 2, 3, 4------------- 1 2 3 4 5&am…...

优化yarn在任务执行时核数把控不准确的问题

核数不准这个事情是个概率问题,如果你碰见了,只能说你有点非欧,本质上是因为集群配置问题,默认时yarn不会去精准把控任务的核数,因为默认的资源计算方式是用实际内存去估算核数,这就导致如果大家配置任务时…...

2024年,收付通申请开通流程

大家好,今天咱们来聊聊关于APP场景中开通微信收付通的一些实用小窍门。在如今的移动互联网时代,很多商家都选择通过APP来提供服务和产品,因此如何在APP中顺利集成微信收付通功能,让用户能够轻松完成支付,就显得尤为重要…...

Django使用django-apscheduler实现定时任务

定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程。 我在这里使用的 django-apscheduler库来实现定时任务。 一、安装 django-apscheduler pip install django-apscheduler二、在项目的setting.py…...

python数据分析:修改数据

在 Python 中进行数据分析时,通常使用 pandas 库来处理和修改数据。以下是一个完整的示例,展示如何使用 pandas 库读取数据、修改数据并保存结果。 1. 安装并导入必要的库 首先,确保你已经安装了 pandas 库。如果没有安装,可以使…...

【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)

热门高效的免费实用类API是当今开发者们追逐的宝藏。这些API提供了各种热门功能和服务,能够帮助开发者轻松地为应用程序增添实用性和吸引力。无论是人脸识别、自然语言处理、机器学习还是图像处理,这些热门高效的免费API提供了强大的功能和高效的性能&am…...

日语 11 12

11. 若者の意識 わかもの  いしき 新作 新作 新作 新作 新作 しんさく 公開 公開 公開 公開 公開 こうかい 映像 映像 映像 映像 映像 えいぞう 人気 人気 人気 人気 人気 にんき 来週 来週 来週 来週 来週 らいしゅう 外国 外国 外国 外国 外…...

STM32程序启动过程

(1)首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,其第一个表项是栈顶地址(32位),第二个表项是复位中断服务入口地址; (2)然后执行复位中断&…...

天才简史——Diederik P. Kingma与他的Adam优化器

一、了解Diederik P. Kingma 发生日期:2024年6月18日 前几日,与实验室同门一同前往七食堂吃饭。饭间,一位做随机优化的同门说他看过一篇被引18w的文章。随后,我表示不信,说你不会数错了吧,能有1.8w次被引都…...

两个src案例分享

案例一 文前废话:某天正在刷着**社区的帖子,欣赏着漂亮的小姐姐,突然间评论区的一条评论引起了我的注意,类似于下面这样 这种评论在html标签中代码格式是<a>这是文字</a>这样的 同时评论区XSS漏洞的高发区,想着可能会有操作点 一、发布一个标题有js语句的贴子 二…...

宕机了, redis如何保证数据不丢?

前言 如果有人问你&#xff1a;"你会把 Redis 用在什么业务场景下&#xff1f;" 我想你大概率会说&#xff1a;"我会把它当作缓存使用&#xff0c;因为它把后端数据库中的数据存储在内存中&#xff0c;然后直接从内存中读取数据&#xff0c;响应速度会非常快。…...

太速科技-基于XCVU9P+ C6678的100G光纤的加速卡

基于XCVU9P C6678的100G光纤的加速卡 一、板卡概述 二、技术指标 • 板卡为自定义结构&#xff0c;板卡大小332mmx260mm; • FPGA采用Xilinx Virtex UltralSCALE 系列芯片 XCVU9P; • FPGA挂载4组FMC HPC 连接器; • 板载4路QSPF&#xff0c;每路数据速…...

Maven:一个下载jar依赖失败的问题解决方案

内部的一个jar包已经上传到了私服上&#xff0c;在私服管理端也能看到该jar包的完整信息&#xff0c;但是springboot项目引入该jar包发现死活下载不下来&#xff0c;报错如图&#xff1a; 从该错误信息中可以看到&#xff0c;找不到服务名是xxl-job这个的&#xff0c;我们要找的…...

Java 枚举的基本使用

一、枚举的概述 java 枚举&#xff08;Enum&#xff09;是一种特殊的数据类型&#xff0c;它允许你定义一组命名的常量。在 Java 中&#xff0c;枚举被实现为类&#xff0c;并且继承自 java.lang.Enum 类。枚举的使用可以提供类型安全、可读性强、易于理解的代码。 (1) 枚举的…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...