k8s学习2

news/2024/12/23 2:07:28/

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走线在直角转弯的地方,信号前后部分相互影响,导致分布电容增加,对信号上升沿和下降沿有延缓影响。从阻抗的角度来说&#…