k8s学习2

news2024/11/12 14:41:53

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

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资源管理/清单配置基础

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.coloradmin.cn/o/1976040.html

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

相关文章

Cesium 相机控制器(1)-wheel 实现原理简析

Cesium 相机控制器(1)-wheel 实现原理简析 已经做大量简化, 不是代码最终的样子. Viewer┖ CesiumWidget┖ ScreenSpaceCameraController(_screenSpaceCameraController)┣ CameraEventAggregator(_aggregator) // 相机事件代理┃ ┖ ScreenSpaceEventHandler(_eventHandler…

3.创建了Vue项目,需要导入什么插件以及怎么导入

如果你不知道怎么创建Vue项目,建议可以看一看这篇文章 怎么安装Vue的环境和搭建Vue的项目-CSDN博客 1.在idea中打开目标文件 2.系在一个插件Vue.js 3.下载ELement UI 在Terminal中输入 # 切换到项目根目录 cd vueadmin-vue # 或者直接在idea中执行下面命令 # 安装element-u…

WordPress 轻量级产品官网类主题 CeoNova-Pro_v4.4绕授权开心版

CeoNova-Pro 主题是一款轻量级、且简洁大气、产品官网类主题,定位于高端产品官网、同时包含了知识付费、定制服务、问答社区、论坛交流、网址导航、以及付费产品购买下载等全方位覆盖。 源码下载:ceonova-pro4.4.zip 变更日志 新增虚拟资源隐藏信息增…

limit 以及分页 SQL 语句

目录 1. 作用 2. 演示 3. 分页 SQL 语句 1. 作用 获取结果集的一部分; 2. 演示 (1)如下,获取表的前三行; (2)只有一个数字,默认从 0 开始; (3&#x…

Linux 项目自动化构建工具 —— make/makefile

Linux 项目自动化构建工具 —— make/makefile 入门使用原理自动化构建递归式自动推导 清理注意 特殊符号 会不会写 makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中&a…

神奇海洋养鱼小程序游戏广告联盟流量主休闲小游戏源码

在海洋养鱼小程序中,饲料、任务系统、系统操作日志、签到、看广告、完成喂养、每日签到、系统公告、积分商城、界面设计、拼手气大转盘抽奖以及我的好友等功能共同构建了一个丰富而互动的游戏体验。以下是对这些功能的进一步扩展介绍: 饲料 任务奖励&a…

使用JWT的SpringSecurity实现前后端分离

1. SpringSecurity完成前后端完全分离 分析: 前后端分离:响应的数据必须为JSON数据,之前响应的是网页 需要修改的代码有: 登录成功需要返回json数据登录失败需要返回json数据权限不足时返回json数据未登录访问资源返回json数据 1.…

英国AI大学排名

计算机学科英国Top10 “计算机科学与信息系统”学科除了最受关注的“计算机科学”专业,还包括了“人工智能”“软件工程”“计算机金融”等众多分支专业。 1.帝国理工学院 Imperial College London 单以计算机专业本科来讲,仅Computing这个专业&#x…

双线性插值(Bilinear Interpolation)

文章目录 一.双线性插值3.双线性插值的优化 一.双线性插值 假设源图像大小为mxn,目标图像为axb。那么两幅图像的边长比分别为:m/a和n/b。注意,通常这个比例不是整数,编程存储的时候要用浮点型。目标图像的第(i,j&…

正点原子imx6ull-mini-Linux驱动之Linux LCD 驱动实验(19)

LCD 是很常用的一个外设,在裸机篇中我们讲解了如何编写 LCD 裸机驱动,在 Linux 下 LCD 的使用更加广泛,在搭配 QT 这样的 GUI 库下可以制作出非常精美的 UI 界面。本章我们 就来学习一下如何在 Linux 下驱动 LCD 屏幕。 1:Linux …

奇安信高管合计套现7.7亿,总裁个人套现1.9亿

【文末送:技战法】 昨天网安一哥,奇安信发布《关于中电金投增持公司股份暨持股 5% 以上股东协议转让公司股份的权益变动的提示性公告》,公告显示中国电子将再次收购奇安信5%的股份。 公告显示,奇安壹号合伙人中:天津…

[Meachines] [Easy] OpenAdmin OpenNetAdmin-RCE+RSA私钥解密+Nano权限提升

信息收集 IP AddressOpening Ports10.10.10.171TCP:22,80 $ nmap -p- 10.10.10.171 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 4b:98:df:85:d1:7…

深入理解操作系统--进程(1)

文章目录 概述进程,轻量级进程和线程进程描述符linux进程四要素创建进程linux3个系统调用创建新的进程do_fork函数copy_process函数 撤销进程 小结 概述 这一章,主要讲的是进程的概念,即程序执行的一个实例。在linux源代码中,通常…

图像像素增强albumentations库的使用

albumentations是一个快速的图像增强库,用于机器学习任务。它支持各种类型的图像变换,包括但不限于旋转、平移、缩放、剪切、翻转、噪声注入、遮挡等。albumentations库可以与深度学习框架如PyTorch和TensorFlow很好地集成, 支持种类丰富的像素级变换,包括雨天、雾天、色域变…

使用Python绘制雷达图的简单示例

雷达图(Radar Chart)也被称为蜘蛛网图、星形图或极坐标图,是一种用于显示多变量数据的图形方法。它以一个中心点为起点,从中心点向外延伸出多条射线,每条射线代表一个特定的变量或指标。每条射线上的点或线段表示该变量…

面试官:如何保证缓存和数据库的一致性?

你好呀,我是苍何! 办公室里鸦雀无声,我木然的看着窗外射进来的阳光,它照在光滑的地板上,又反射到天花板上,再从天花板上反射下来时,就变成一片弥散的白光。 我在白光里偷偷放了一个恶毒的臭屁…

二百五十四、OceanBase——Linux上安装OceanBase数据库(四):登录ocp-express,配置租户管理等信息

一、目的 在部署OceanBase成功后,接下来就是登录ocp-express,配置租户管理等信息! 二、ocp-express网址以及账密信息 三、实施步骤 1 登录ocp-express 2 集群总览 3 租户管理 3.1 新建租户 3.2 配置新租户信息 剩下的几个模块了解即可&am…

redis实现的分布式锁redisson

redis服务宕机出现的概率很低,redis集群整体的思想是AP思想(优先保证高可用性) 如果非要保证业务数据强一致性建议采用CP思想,用zookeeper实现分布式锁。

C++自定义接口类设计器之模板代码生成四

关键代码 QStringList multis templateStr.split(\n);bool startConfig false;bool startVar false;bool startTemplate false;for (const auto& line : multis) {if(startConfig) {if(line.trimmed().startsWith("camealCase")) {auto name_val line.split…

Web开发-html篇-上

HTML发展史 HTML的历史可以追溯到20世纪90年代初。当时,互联网尚处于起步阶段,Web浏览器也刚刚问世。HTML的创建者是蒂姆伯纳斯-李(Tim Berners-Lee),他在1991年首次提出了HTML的概念。HTML的初衷是为了方便不同计算机…