k8s学习2

news/2024/9/20 1:32:07/ 标签: kubernetes, 学习, 容器, 部署

k8s 分成Master 负责整个k8s集群管理 node节点(工作)运行nginx
节点—服务器

kubernetes__2">kubernetes 组件

kubernetes集群主要由控制节点(Master)、工作节点(Node)组成

在这里插入图片描述

Master组件

集群的控制平面,集群的决策 负责管理k8s 集群管理

apiserver

Kubernetes API:集群统一入口,各个组件的协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给apiserver处理后再提交etcd存储
控制集群入口

scheduler

负责资源调度,按照预定的调度策略将Pod调度到相应Node上
例如 集群运行一个nginx容器,通过scheduler 根据调度策略计算 nginx 安装到那台对应的工作节点上(计算);

controller-manager

处理集群中常规的后台任务,一个资源对应一个控制器,而controller-manager就是负责管理这些控制器的
维护集群的状态。比如故障检测、自动扩展、滚动更新等
例如 集群运行一个nginx容器,通过scheduler 根据调度策略计算 nginx 安装到那台对应的工作节点上(计算),在 通过controller-manager 安排 将nginx安装到对应的工作节点上(安排)。

etcd

分布式键值存储系统。用于保存集群状态数据,比如Pod。Service等对象信息
我们可以将etcd 改成mysql。

node组件

集群的数据平面,负责为容器提供运行环境(工作节点)

kubelet

kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期。比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器
kubelet 发送命令给docker 来运行容器

kube-proxy

在Node节点或实现Pod网络代理,维护网络规则和四层负载均衡工作
访问程序的入口

docker

运行nginx 计算
访问nginx
容器引擎:运行容器
例如通过k8s运行一个nginx:
1.首先发送请求到Master节点(控制节点) ApiServer组件
2.ApiServer组件会根据scheduler组件计算出 nginx 应该安装到具体那台工作节点上
3.ApiServer组件在调用controller-manager组件,通知node节点安装该nginx服务
4.Node节点中的kubelet接受到控制节点的通知,使用docker运行一个nginx容器(nginx pod)
pod是k8s最小操作单元 一个pod可以运行多个容器
5.nginx运行成功之后,在通过kube-proxy 来对我们的pod进行访问。

kubectl create deployment nginx --image=nginx:1.14-alpine

常见名词

1.Master:集群控制节点,每个集群需要至少一个master节 点负责集群的管控
2.Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行
3.Pod: kubernetes的最小控制单元,容器都是运行在pod中的,-个pod中可以有1个或者多个容器
4.Controller:控制器,通过它来实现对pod的管理,比如启动pod、 停止pod、伸缩pod的数量等等
5.Service: pod对外服务的统一入口,下面可以维护者同一类的多个pod
6.Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签
7.NameSpace:命名空间,用来隔离pod的运行环境

kubernetes_58">kubernetes资源管理/清单配置基础

kubectl常用的命令

kubectl的命令可分为三类
1.陈述式命令(命令式对象管理) 类似于我们直接在docker 中 docker run 命令
2.陈述式对象配置(命令式对象配置) 类似于类似于 docker-compose.yml
3.声明式对象配置(声明式对象配置)

kubectl是k8s集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署,kubectl命令的语法如下:

kubectl [command] [type] [name] [flags]
comand:指定要对资源执行的操作,例如create、 get、delete
type:指定资源类型,比如deployment、pod、 service
name:指定资源的名称,名称大小写敏感
flags:指定额外的可选参数

kubectl get nodes 查询当节点
kubectl 常用命令
1.kubectl get nodes —查询k8s集群节点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.kubectl get pod —查看所有的pod
在这里插入图片描述
3.kubectl describe pod nginx-6867cdf567-94kcb
查看pod详细内容

在这里插入图片描述

然后在我们的工作节点上执行 docker ps 查看该nginx 是否在运行

4.kubectl cluster-info —查看k8s 集群的信息

在这里插入图片描述

5.kubectl version 查看当前k8s 集群的版本

在这里插入图片描述

陈述式命令(命令式对象管理)

通过陈述式命令(命令式对象管理) 对namespace/pod操作
pod 是我们k8s 最小单元 容器运行在我们的pod里面,说到pod就是pod是放容器
一个pod可以在里面运行n多个不同容器
1.命令形式创建一个namespace
kubectl create namespace mayikt-sit
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2.查询所有的namespace
kubectl get ns

在这里插入图片描述

3.在mayikt-sit的namespace 下运行一个pod
kubectl run pod --image=nginx -n mayikt-sit

在这里插入图片描述
4.查看mayikt-sit下的pod
kubectl get pods -n mayikt-sit
注意事项 查询pod 需要指定具体命名空间
在这里插入图片描述

在这里插入图片描述
kubectl get pods -n

在这里插入图片描述
默认查询 default namespace
5.查看该pod的详细信息
kubectl describe pod pod-864f9875b9-h467q (错误方式)
在这里插入图片描述
需要指定该pod对应的namespace 如果没有指定则会报错
kubectl describe pod pod-864f9875b9-h467q -n mayikt-sit (正确方式)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.删除该pod
不能只删pod,因为pod不存在了,会自动起一个pod
kubectl delete pods pod-864f9875b9-whqt6 -n mayikt-sit

在这里插入图片描述

但是删除该pod之后,有重新启动一个新的pod
kubectl get pods -n mayikt-sit

在这里插入图片描述

对比发现pod name 名称已经发生变化,让后查看该新的pod详细信息
kubectl describe pod pod-864f9875b9-jdp7k -n mayikt-sit
在这里插入图片描述

你会发现ip 也发生了变化。
在这里插入图片描述
在这里插入图片描述

我们应该通过删除命名空间,则自动会将这些pod删除
kubectl delete ns mayikt-sit
在这里插入图片描述
查看该命名空间下pod 已经没有该pod呢
在这里插入图片描述

方式2 命令式对象配置

命令式对象配置就是使用命令配合配置文件一起来操作k8s资源 类似于我们学习
docker-compose 定义 yml 配置文件 需要对yaml 配置有一定了解。
kubectl create -f mayikt-pod1.yml 创建资源
kubectl delete -f mayikt-pod1.yml 删除资源
kubectl get-f mayikt-pod1.yml
1.创建 mayikt-pod1.yml

apiVersion: v1
kind: Namespace
metadata:name: mayikt-sit #指定的Namespace空间名称 ---apiVersion: v1
kind: Pod
metadata:name: mayikt-nginx-pod    #指定pod的名称,同一个命名空间不能重复namespace: mayikt-sit  #指定该pod对应的Namespace
spec:containers: - name: mayikt-nginx-container #运行一个nginx容器image: nginx:1.17.9  #指定镜像的名称

上面yml的效果
在这里插入图片描述
上传到服务器端
在这里插入图片描述

/usr/local 创建一个 mayikt 来演示我们的
mkdir mayikt

在这里插入图片描述
执行kubectl create -f mayikt-pod1.yml

在这里插入图片描述

创建成功 自动创建Namespace mayikt-sit 和 pod mayikt-nginx-pod
执行 kubectl get ns
在这里插入图片描述
执行 kubectl get pods -n mayikt-sit
在这里插入图片描述
在这里插入图片描述

查看该pod详细信息 kubectl describe pod mayikt-nginx-pod -n mayikt-sit
在这里插入图片描述

在这里插入图片描述
容器运行在 164节点 执行curl 172.17.0.2 说明 pod中容器运行成功

执行get命令,查看资源 kubectl get -f mayikt-pod1.yml

在这里插入图片描述删除delete 命令 kubectl delete -f mayikt-pod1.yml
在这里插入图片描述

在这里插入图片描述
namespace “mayikt-sit” deleted
pod “mayikt-nginx-pod” deleted
执行 kubectl get ns

在这里插入图片描述

在访问该nginx 已经访问不了
在这里插入图片描述

声明式对象配置

声明式对象配置跟命令式对象配置很类似,通过命令apply
kubectl apply -f mayikt-pod2.yml
在创建一个mayikt-pod2.yml

apiVersion: v1
kind: Namespace
metadata:name: mayikt-sit #指定的Namespace空间名称 ---apiVersion: v1
kind: Pod
metadata:name: mayikt-nginx-pod    #指定pod的名称namespace: mayikt-sit  #指定该pod对应的Namespace
spec:containers: - name: mayikt-nginx-container #运行一个nginx容器image: nginx:1.17.9  #指定镜像的名称

执行:kubectl apply -f mayikt-pod2.yml

在这里插入图片描述
查看 pod kubectl get pods -n mayikt-sit

在这里插入图片描述
查看pod 详细信息
kubectl describe pod mayikt-nginx-pod -n mayikt-sit

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

再次执行 kubectl apply -f mayikt-pod2.yml 资源没有发生任何变化
在这里插入图片描述

namespace/mayikt-sit unchanged
pod/mayikt-nginx-pod unchanged
未发生变化

修改nginx的版本1.17.8
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
再次执行:kubectl apply -f mayikt-pod2.yml
在这里插入图片描述
pod 是有发生变化的

查看pod 详细信息
kubectl describe pod mayikt-nginx-pod -n mayikt-sit
在这里插入图片描述
在这里插入图片描述

nginx:1.17.9 改成nginx:1.17.8

总结:
如果资源不存在就创建(create),相当于kubectl create
如果资源已存在,就更新(update),相当于kubectl patch
kubernetes常用组件
1.谈谈大家构建k8s集群环境过程常见问题
2.简单谈谈K8S集群架构设计原理
3.谈谈pod 、Namespace、Label、Deployment、Service之间关系
4.pod控制器原理、类型有哪些
5.pod的生命周期
6.实战K8S构建nginx集群环境 弹性扩容与缩容
20点25分准时开始

Namespace

不同命名空间是隔离的
1.Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。
可以实现多套环境的资源隔离或者多租户的资源隔离。
2.资源的名称需要在命名空间内是唯一的,但不能跨命名空间。命名空间不能相互嵌套,每个 Kubernetes 资源只能在一个命名空间中。命名空间是在多个用户之间划分集群资源的一种方法(通过资源配额)
3.k8s集群中的所有的Pod都是可以相互访问的,将两个Pod划分到不同的namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的"组",以方便不同的组的资源进行隔离使用和管理,不同的Namespace下的pod 相互之间是访问不同的。
在这里插入图片描述
执行命令 kubectl get ns 查看所有的 Namespace
在这里插入图片描述
1.default 没有指明使用其它命名空间的对象所使用的默认命名空间
2.kube-system Kubernetes 系统创建对象所使用的命名空间
3.kube-public 这个命名空间是自动创建的,所有用户(包括未经过身份验证的用户)都可以读取它。这个命名空间主要用于集群使用,以防某些资源在整个集群中应该是可见和可读的。这个命名空间的公共方面只是一种约定,而不是要求。
创建Namespace
kubectl create ns mayikt-sit

在这里插入图片描述
删除Namespace
kubectl delete ns mayikt-sit

在这里插入图片描述

pod

Pod是在k8s集群进行管理的最小单元,程序要运行必须部署容器(docker)中,而容器必须存在于Pod中。
Pod是对(docker)容器的封装,容器在pod里面,1个Pod中可以存在一个或者多个容器
1.kubectl create ns mayikt-sit
创建pod,先创建命名空间,不然就在Default下

在这里插入图片描述
2.运行一个 nginx pod
kubectl run nginx --image=nginx:1.17.9 --port=80 --namespace=mayikt-sit
在这里插入图片描述

在这里插入图片描述
3.kubectl get pod -n mayikt-sit 查看命名空间mayikt-sit下的pod

在这里插入图片描述
4.查看pod的ip
kubectl get pod -n mayikt-sit -o wide

在这里插入图片描述
5.更多pod详细信息
kubectl describe pod nginx-64777cd554-z6hgr -n mayikt-sit
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.删除pod
直接删除pod是删除不成功的 ,pod控制器有会重新启动一个pod
kubectl get pods -n mayikt-sit

在这里插入图片描述
kubectl delete pod nginx-64777cd554-z6hgr -n mayikt-sit

在这里插入图片描述
继续执行 kubectl get pods -n mayikt-sit

在这里插入图片描述
我们将pod控制器删除 这样我们pod就可以删除啦
kubectl get deployment -n mayikt-sit 查询mayikt-sit下的控制器
在这里插入图片描述

在这里插入图片描述

删除pod控制器
kubectl delete deployment nginx -n mayikt-sit
在这里插入图片描述
kubectl get deployment -n mayikt-sit
在这里插入图片描述
kubectl get pods -n mayikt-sit
在这里插入图片描述
这样的我们的pod就被删除啦

在这里插入图片描述


http://www.ppmy.cn/news/1504442.html

相关文章

爬虫“拥抱大模型”,有没有搞头?

验证码坐标识别 数据采集过程中,可能会碰到各种风控策略。其中,验证码人机验证是较为常见的,点选类验证码需要识别出相应的坐标,碰到这种情况,一般要么自己训练模型,要么对接打码平台。现在也可以将识别工…

用60行python代码制作一个扫雷

扫雷游戏(Minesweeper)是一个经典的逻辑游戏,玩家需要在一个包含隐藏地雷的网格中标记出所有地雷的位置,同时避免触发它们。下面,我将提供一个简单的Python扫雷游戏实现,并附带详细的教程。 第一步&#x…

行为型设计模式1:状态/策略/命令

行为型设计模式:状态/策略/命令 (qq.com)

CC++:贪吃蛇小游戏教程

❀创作不易,关注作者不迷路❀😀😀 目录 😀贪吃蛇简介 😃贪吃蛇的实现 🐍生成地图 🐍生成蛇模块 ❀定义蛇的结构体 ❀初始化蛇的相关信息 ❀初始化食物的相关信息 🐍光标定位和…

无人值守大数据平台(CDH6.3.2+Flink+海豚调度器)如何实现大数据平台稳定及顺利跑出离线报表和实时报表(持续更新方案)

目录 背景 一、影响因素 (一)硬件方面 服务器硬件故障 资源不足 (二)软件方面 大数据组件故障 源数据问题 二、解决方案 (一)硬件冗余与监控 硬件冗余 (二)软件容错 1.配置高可用和分布式 HDFS (Hadoop Distributed File System) 高可用性 2. YARN (Yet …

湖仓一体架构解析:数仓架构选择(第48天)

系列文章目录 1、Lambda 架构 2、Kappa 架构 3、混合架构 4、架构选择 5、实时数仓现状 6、湖仓一体架构 7、流批一体架构 文章目录 系列文章目录前言1、Lambda 架构2、Kappa 架构3、混合架构4、架构选择5、实时数仓现状6、湖仓一体架构7、流批一体架构 前言 本文解析了Lambd…

JAVA游戏源码:泡泡堂|大学生练手项目

学习java朋友们,福利来了,今天小编给大家带来了一款泡泡堂源码。此源码仅供学习使用!! 视频演示 源码搭建和讲解 代码简介 包名称类描述com.whh.frameMyJFrame.java显示窗体、绑定监听、启动线程com.whh.frameMyJPanel.java不断读取人物信息com.whh.m…

PCB设计经验——布线原则

1.连线精简——避免直角布线 导线也应看作一种元器件,有自己的电阻,电感,电容 PCB走线在直角转弯的地方,信号前后部分相互影响,导致分布电容增加,对信号上升沿和下降沿有延缓影响。从阻抗的角度来说&#…

Java 并发编程:Java 线程池的介绍与使用

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 024 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…

前端自定义组件+自建npm缓存服务器

自建 npm 缓存服务 安装 verdaccio npm install -global verdaccio启动 verdaccio verdaccio默认情况下,会在本地启动一个服务 http://localhost:4873/ 开发公共组件 在你的工程目录下执行 npm init -y ,相关配置自己定义index.ts 中开发组件逻辑 …

【WPF开发】如何将工程打包成单独的EXE安装包

一、安装NSIS与HM NIS Edit 1、下载和安装NSIS NSIS官网 2、下载和安装HM NIS Edit HM NIS Edit官网 点击下载后等待几秒,就会弹出下载提示 双击下载的安装包,点击“OK” 点击“下一步” 点击“我接受” 更改路径后,点击安装即可 二、打包软…

82.WEB渗透测试-信息收集-框架组件识别利用(6)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:81.WEB渗透测试-信息收集-框架组件识别利用(5) log4j/log4j2&…

测试人生 | 招聘严峻期从面试无力感,到一天2个offer的一些经验分享(内附美团、字节、快手等面试题)

本人是霍格沃兹北京测试开发学社线下3期学员,拥有3年测试工作经验,之前一直在某大厂外包做软件测试,期间主要是以功能测试为主。 经过一个月的高强度找工作奋战,最终拿下了3家公司offer,选择了一家自己很满意的公司。…

③分析胃癌组蛋白脱乙酰酶HDS模型-SeuratHDS细胞比例

目录 文献Seurat处理步骤 ①HDS分析步骤 ②原文献数据处理 加载单细胞Seurat 换算每个样本每种细胞比例 比较两个分组比例 ①比例计算 ②绘图 单种细胞比例亚组间差异 ①添加分组信息 ②循环作图 文献Seurat处理步骤 组蛋白脱乙酰酶介导的胃癌肿瘤微环境特征及协同…

机器学习笔记 - python学习记录三 Python中的矢量化

当我们必须处理大量数据集时,计算上非最优的函数可能会成为算法的巨大瓶颈,最终导致模型运行时间过长。为了确保代码计算效率高,我们将使用矢量化。任何算法执行的时间复杂度都非常重要,决定了应用程序是否可靠。在实时输出应用方面,尽可能在最佳时间内运行大型算法非常重…

【从相邻元素对还原数组】python刷题记录

R3-图篇 饭前一道题 思路: 单向构造 class Solution:def restoreArray(self, adjacentPairs: List[List[int]]) -> List[int]:mnlen(adjacentPairs)#n表示数组元素总数n1#统计dictdefaultdict(int)#存储关系哈希表hashmapdefaultdict(list)for a,b in adjacent…

E25.【C语言】练习:修改二进制序列的指定位

十进制13-->二进制01101 现要求二进制序列的第5位修改为1,再改成0 复习:逻辑运算 非(NOT)(C语言:~) x0,NOT x-->1;x1,NOT x-->0 与(…

day12 多线程

目录 1.概念相关 1.1什么是线程 1.2什么是多线程 2.创建线程 2.1方式一:继承Thread类 2.1.1实现步骤 2.1.2优缺点 2.1.3注意事项 2.2方式二:实现Runnable接口 2.2.1实现步骤 2.2.2优缺点 2.2.3匿名内部类写法 2.3方式三:实现cal…

JAVA游戏源码:仙剑|大学生练手项目

学习java朋友们,福利来了,今天小编给大家带来了一款仙剑源码。注意:此源码仅供学习使用!! 源码搭建和讲解 启动main入口: //************************************************************************ // ************完整源码…

一步步搭建Web自动化测试框架

测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程。另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人。本章和下一张…