k8s-kubectl命令详解、Pod创建过程、Pod的生命周期、定制Pod、资源对象文件

news2024/12/26 11:23:20

集群管理

一、如何管理集群

kubectl是用于管理Kubernetes集群的命令行工具

二、语法格式:

kubectl [command] [TYPE] [NAME] [flags]

command:子命令,如create,get,describe,delete

type:资源类型,可以表示为单数,复数或缩写形式

name:资源的名称,如果省略,则显示所有资源信息

flags:指定可选标志,或附加的参数

三、集群管理命令

子命令说明
help用于查看命令及子命令的帮助信息
cluster-info显示集群的相关配置信息
version查看服务器及客户端的版本信息
api-resources查看当前服务器上所有的资源对象
api-versions查看当前服务器上所有资源对象的版本
config管理当前节点上kubeconfig的认证信息
# 查看当前认证使用的用户及证书
[root@master ~]# kubectl config get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin
# 使用 view 查看详细配置
[root@master ~]# kubectl config view 
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://192.168.1.50:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

四、管理主机授权

为其他主机添加管理权限

[root@harbor ~]# vim /etc/hosts
192.168.1.30    harbor
192.168.1.50    master
192.168.1.51    node-0001
192.168.1.52    node-0002
192.168.1.53    node-0003
192.168.1.54    node-0004
192.168.1.55    node-0005

# 安装集群管理工具kubectl 
[root@harbor ~]# yum install -y kubectl
# 拷贝证书到目标主机
# 证书默认路径:${HOME}/.kube/config
[root@harbor ~]# mkdir -p $HOME/.kube
[root@harbor ~]# rsync -av master:/etc/kubernetes/admin.conf $HOME/.kube/config
# 设置证书的所有者和所属组
[root@harbor ~]# chown $(id -u):$(id -g) $HOME/.kube/config
# 验证管理授权
[root@harbor ~]# kubectl get nodes

五、资源对象概述

什么是资源对象

k8s 中把可以创建或配置的应用和服务称为资源对象

我们在集群中创建的Pod、负载均衡、存储、网络服务等等都是资源对象

如何创建资源对象

简单资源对象可以使用“kubectl”直接创建

高级资源对象需要使用“资源对象文件”创建

查看私有仓库中的镜像

[root@master ~]# curl -sku admin https://harbor:443/v2/library/myos/tags/list | python3 -m json.tool

# 也可以通过浏览器网页查看

创建Pod

使用run创建一个Pod资源对象

kubectl run Pod名称 [选项/参数] --image=镜像名称:标签

# 创建资源对象
[root@master ~]# kubectl run myweb --image=myos:nginx
pod/myweb created

# 查询资源对象
[root@master ~]# kubectl get pods -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE
myweb   1/1     Running   0          3s    10.244.1.3   node-0001

[root@master ~]# curl http://10.244.1.3
Nginx is running !

六、Pod概述

  • Pod由一个或多个容器组成
  • Pod是Kubernetes中最小的管理元素
  • 同一个Pod共享网络IP及权限
  • 同一个Pod共享主机名称
  • 同一个Pod共享存储设备

Pod创建过程

为什么要使用Pod

  • 服务之间有相关性
  • 启动容器的时候需要初始化或进行相关配置

Pod的生命周期

  • Pod对象自从创建开始至终止的时间范围称为其生命周期
  • 在这段时间中,Pod处在多种不同的状态,并执行相关操作
  • 创建主容器为必需的操作,其它为可选操作(初始化容器、启动后钩子、存活性探测、就绪性探测以及终止前钩子等)

Pod相位状态

Pod的status字段是一个PodStatus的对象,Pod对象总是应该处于其生命进程中以下几个相位(phase)之一:

Pending        Pod创建过程中,但他尚未被调度成功

Running        Pod中所有容器都已经被创建成功

Completed        Pod所有容器都已经成功终止,并不会被重启

Failed        Pod中的所有容器中至少有一个容器退出是非0状态

Unknow        无法正常获取到Pod对象的状态信息

Pod管理命令

核心管理命令

系统中的核心服务都是运行在Pod中

子命令说明备注
run/create创建资源对象可输出资源文件模板
get查看资源对象的状态信息可选参数:-o 显示格式
describe查询资源对象的属性信息
logs查看容器的报错信息可选参数:-c 容器名称
kubectl get 语法格式:

kebectl get 资源对象 [资源名称] [选项/参数]

常用参数:

-o name 只显示名字

-o wide 显示更加的详细信息

-o yaml 以yaml语法格式显示资源对象

-o json 以json语法格式显示资源对象

查看命名空间
[root@master ~]# kubectl get namespaces 
NAME              STATUS   AGE
default           Active   39h
kube-node-lease   Active   39h
kube-public       Active   39h
kube-system       Active   39h
查看命名空间中的资源对象
[root@master ~]# kubectl -n kube-system get pods
NAME                             READY   STATUS    RESTARTS      AGE
etcd-master                      1/1     Running   0             39h
kube-apiserver-master            1/1     Running   0             39h
kube-controller-manager-master   1/1     Running   0             39h
kube-scheduler-master            1/1     Running   0             39h
... ...
系统命名空间
  • default默认的命名空间,不声明命名空间的Pod都在这里
  • kube-node-lease为高可用提供心跳监视的命名空间
  • kube-public公共数据,所有用户都可以读取它
  • kube-system系统服务对象所使用的命名空间

k8s系统核心服务都运行在kube-system名称空间中

kubectl describe语法格式:

kubectl describe 资源类型 [资源名称] [选项/参数]

Events下是事务日志,常用于排错

常用管理命令
exec在某一个容器内执行特定的命令可选参数:-c 容器名称
cp在容器和宿主机之间拷贝文件或目录

可选参数:-c 容器名称

delete删除资源对象可选参数:-f 文件名称
kubectl exec

在容器内执行命令

kubectl  exec [选项/参数] Pod名称 -- 操作命令

常用参数

-it 分配交互式终端

# 执行非交互命令
[root@master ~]# kubectl exec myweb -- ls

# 执行交互命令
[root@master ~]# kubectl exec -it myweb -- /bin/bash
[root@myweb html]#  # 这里可以交互式操作Pod了
kubectl cp

拷贝文件/目录

kubectl cp [选项/参数] 原文件 目标文件

路径格式:[Pod名称:绝对路径]

# 与容器进行文件或目录传输
[root@master ~]# kubectl cp myweb:/etc/yum.repos.d /root/aaa
tar: Removing leading `/' from member names
[root@master ~]# tree /root/aaa
/root/aaa
├── local.repo
├── Rocky-AppStream.repo
├── Rocky-BaseOS.repo
......

[root@master ~]# kubectl -n work cp /etc/passwd myhttp:/root/mima
[root@master ~]# kubectl -n work exec myweb -- ls /root/
mima
kubectl delete

集群中所有资源均可使用 delete 命令删除

kubectl delete [选项/参数] 资源类型 资源名称

# 删除一个Pod
[root@master ~]# kubectl delete pods myweb 
pod "myweb" deleted

# 删除 work 名称空间下所有 Pod 对象
[root@master ~]# kubectl -n work delete pods --all
pod "myhttp" deleted

# 删除名称空间
[root@master ~]# kubectl delete namespaces work 
namespace "work" deleted

资源对象管理

一、资源对象文件

什么是资源对象

  • Kubernetes对象是“目标性记录”
  • Kubernetes使用这些对象去表示整个集群的状态

什么是资源对象文件

创建kubernetes对象时,必须提供资源对象的一些基本信息(例如:资源的对象的名字),以及描述描述描述该对象的期望状态特征(规约),如果我们在文件中使用Yaml的语法格式描述了上面的信息,这个文件就是资源对象文件

为什么要使用资源对象文件

  • 命令无法持久化,没有历史记录,不方便重现
  • 服务众多,多个容器之间有关联性,管理不方便
  • 很多高级的复杂的功能靠简单的命令方式无法实现,这些都需要使用资源文件描述

资源对象文件可以做什么

可以创建、删除、变更、管理资源对象

示例:

---                        # Yaml文件起始标志
kind: Pod                  # 创建资源的类型
apiVersion: v1             # 资源对应的版本
metadata:                  # 属性信息,元数据
  name: myweb              # 属性信息,资源的名称
spec:                      # 资源的特性描述(规约)
  containers:              # 容器资源特征描述
  - name: webserver    
    image: myos:nginx
status: {}                 # 资源状态,运行后自动生成

命名规范

  • 当你与指定的 API 对象进行交互时,使用大写驼峰式命名法,也被称为帕斯卡拼写法(PascalCase)
  • 不要将 API 对象的名称切分成多个单词

数组嵌套:

Json数据:

{

        "ports":

                [ {"name":"xx","Port":80}, {"name":"hh","Port":443} ]         

}

# Yaml语法格式

ports:
- name: xx
  Port: 80
- name: hh
  Port: 443

什么是静态Pod

  • 静态Pod是由kubelet守护进程直接管理的Pod,不需要API服务器监管。与由控制面管理的POd不同
  • kubelet监视每个静态Pod(在它崩溃之后重新启动)
  • 静态Pod永远都会绑定到一个指定节点上的kubelet
  • 静态Pod的spec不能引用其它API对象
  • 静态Pod配置路径:/var/lib/kubelet/config.yaml
  • staticPodPath:/etc/kubernetes/mainfests
# 创建静态Pod
[root@node-0003 ~]# vim /etc/kubernetes/mainfests/myweb.yaml
---                        
kind: Pod                  
apiVersion: v1             
metadata:                  
  name: myweb             
spec:                     
  containers:              
  - name: webserver    
    image: myos:nginx
# 在master查看
[root@master ~]# kubectl get pods -o wide
......

# 删除静态Pod
在master上使用kubectl delete pod
kubelet会自动重建Pod
删除资源文件才能彻底删除Pod
rm -f /etc/kubernetes/mainfests/myweb.yaml

二、管理资源对象

子命令说明备注
create创建文件中定义的资源支持指令式和资源对象文件配置
apply创建(更新)文件中定义的资源只支持资源对象文件(声明式)
delete删除文件中定义的资源可支持指令式和资源对象文件配置
# 创建资源对象
[root@master ~]# kubectl create -f myweb.yaml 
pod/myweb created
# 不能更新,重复执行会报错
[root@master ~]# kubectl create -f myweb.yaml 
Error from server (AlreadyExists): error when creating "myweb.yaml": pods "myweb" already exists
# 使用资源对象文件删除
[root@master ~]# kubectl delete -f myhttp.yaml
pod "myhttp" deleted
[root@master ~]# kubectl get pods
No resources found in default namespace.
# 创建资源对象
[root@master ~]# kubectl apply -f myweb.yaml 
pod/myweb created
# 更新资源对象
[root@master ~]# kubectl apply -f myweb.yaml 
pod/myweb configured
# 删除资源对象
[root@master ~]# kubectl delete -f myweb.yaml 
pod "myweb" deleted

# 拓展提高
# 与 kubectl apply -f myweb.yaml 功能相同
[root@master ~]# cat myweb.yaml |kubectl apply -f -  

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

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

相关文章

拼多多2023年实现营收2476亿 助力品质好物与消费升级双向奔赴

拼多多集团近日发布了截至去年12月31日的财务业绩报告,拼多多在2023年第四季度实现了889亿元的营收,同比增长了惊人的123%。而在全年范围内,拼多多的营收更是高达2476亿元,同比增长了90%。 去年是拼多多全面拥抱高质量发展的元年…

流水灯的实现

#include<reg51.h> //点亮一个LED灯&#xff0c;并使其闪烁 sbit LED0P2^0; void delay(int n) {int i;for(i0;i<n;i); } void main() {while(1){LED00; //亮delay(6000);LED01;delay(6000);} } #include<reg51.h> //实现流水灯 void delay(int n) {int i;fo…

Jenkins安装 Linux 更换镜像 安装插件

Jenkins安装 Linux 更换镜像 安装插件 前言 下面叙述了三种jenkins安装的方式,jenkins安装之前必须有java环境因为他是java写的… yum安装只能安装最新版本的jenkins,但是jenkins是java写的所以他强依赖java版本,当你的服务器的java版本与jenkins版本冲突时还需要给jenkins重…

学浪视频怎么保存到本地

现在随着知识付费的兴起&#xff0c;抖音也下场做知识付费&#xff0c;做了一个学浪平台&#xff0c;可是它却不提供下载按钮&#xff0c;但我们又需要把学浪视频保存到本地 这里就教大家如何将学浪视频保存到本地 由于有些小白不懂技术&#xff0c;他只想下载下来视频&#…

UnityShader(十九) AlphaBlend

上代码&#xff1a; Shader "Shader入门/透明度效果/AlphaBlendShader" {Properties{_MainTex ("Texture", 2D) "white" {}_AlphaScale("AlphaScale",Range(0,1))1.0}SubShader{Tags { "RenderType""Transparent&quo…

删除列表中指定索引对应的元素删除字典中指定键对应的元素operator.delitem(d, p)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 删除列表中指定索引对应的元素 删除字典中指定键对应的元素 operator.delitem(d, p) [太阳]选择题 关于operator.delitem()的使用方法和功能正确的是 import operator list [11, 22, 33, 44,…

实体框架EF(Entity Framework)简介

实体框架EF&#xff08;Entity Framework&#xff09;简介 文章目录 实体框架EF&#xff08;Entity Framework&#xff09;简介一、概述二、O/R Mapping是什么采用O/R Mapping带来哪些好处 三、Entity Framework架构3.1 下图展示了Entity Framework的整体架构3.2 Entity Framew…

STL中 function 源码解析

1. function 本文基于 GCC 9.4 function 的作用就是将各种仿函数的调用统一起来&#xff1b; 1.1 类中非静态成员函数指针为什么是16字节 auto cptr &A::myfunc; 类中非静态成员函数 &#xff0c;其类型为 void (A::*)(int) auto rptr print_num; 普通函数对应汇…

MyBatis-Plus 实用工具:SqlHelper 让你的数据库操作更得心应手

一、SqlHelper是什么&#xff1f; SqlHelper 是MyBatis-Plus的一款SQL 辅助工具类&#xff0c;提供了一些常用的方法&#xff0c;简便我们的操作&#xff0c;提高开发效率。文档 二、示例代码 public class SqlHelperDemo {public static void main(String[] args) {// 示例…

【spring】@Lazy注解学习

Lazy介绍 Lazy 注解是一个配置注解&#xff0c;用于指示 Spring 容器在创建 bean 时采用延迟初始化的策略。这意味着&#xff0c;除非 bean 被实际使用&#xff0c;否则不会被创建和初始化。 在 Spring 框架中&#xff0c;默认情况下&#xff0c;所有的单例 bean 在容器启动时…

运用YOLOv5实时监测并预警行人社交距离违规情况

YOLO&#xff08;You Only Look Once&#xff09;作为一种先进的实时物体检测算法&#xff0c;在全球范围内因其高效的实时性能和较高的检测精度受到广泛关注。近年来&#xff0c;随着新冠疫情对社交距离管控的重要性日益凸显&#xff0c;研究人员开始将YOLO算法应用于社交距离…

关于Count,FPKM,TPM,RPKM等表达量的计算及转换 | 干货

原文链接:关于Count,FPKM,TPM,RPKM等表达量的计算及转换 | 干货 写在前面 今天使用count值转化TPM,或是使用FPKM转换成TPM。这样的教程,我们在前面已经出国一起相对比较详细的教程了,一文了解Count、FPKM、RPKM、TPM | 相互间的转化,在这个教程中,我们也归纳了各个数…

【力扣hot100】128.最长连续序列

给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a;4 解…

DMA的定义和作用

在计算机系统中&#xff0c;DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;是一种用于提高数据传输效率的重要技术。本文将介绍DMA的定义、原理和作用&#xff0c;以及它在计算机系统中的重要性。 以下是我整理的关于嵌入式开发的一些入门级资料&a…

app开发中HBuilderX运行模拟器 配置模拟器手册

1.首先打开HBuilder 然后点击,左上角运行 2.点击运行到手机或模拟器内的ADB路径设置(A) 3. adb配置你模拟器的 adb.exe路径端口号配置你模拟器的端口号 我这里使用的逍遥模拟器所以 | 21503 端口 | 手机模拟器名称21503 端口逍遥模拟器21503夜神模拟器62001网易mumu模拟器7…

点餐小程序php毕设项目

主要技术框架&#xff1a; 主要功能模块&#xff1a; 商品管理 订单管理 用户管理 优惠券管理 商品分类管理 评论管理 轮播图管理 截图 获取源码 https://blog.lusz.top/article?article_id-2

Talk|Mila研究所蒙特利尔大学刘圳:三维表征和三维网格的重建与生成

本期为TechBeat人工智能社区第580期线上Talk。 北京时间3月21日(周四)20:00&#xff0c;Mila研究所&蒙特利尔大学博士生—刘圳的Talk已经准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “三维表征和三维网格的重建与生成”&#xff0c;向大家系统地介…

【软考】生成树

目录 1. 概念2. 图解3. 例题3.1 例题1 1. 概念 1.对于有n个顶点的连通图&#xff0c;至少有n-1条边&#xff0c;而生成树中恰好有n-1条边2.连通图的生成树是该图的极小连通子图3.若在图的生成树中任意加一条边&#xff0c;则必然形成回路4.图的生成树不是唯一的5.从不同的顶点…

GPU云服务器的优势和应用

GPU即图形处理器&#xff0c;是一种高性能计算加速器&#xff0c;主要用于处理复杂的图像、视频等。GPU云服务器&#xff0c;指的是在云计算环境下&#xff0c;通过云平台提供GPU计算能力的虚拟服务器。随着科技的迅猛发展&#xff0c;科技领域对其的讨论和应用也日益热烈、广泛…

ios symbolicatecrash 符号化crash

一、准备 1.1 .crash 文件获取 设备连接电脑打开XCode, 依次 XCode -> Windows -> Device and Simulator -> View Device Logs找到 (对应app名+时间点) -> 右键 Export Log1.2 .dSYM 和 .app 文件获取 .dSYM是十六进制函数地址映射信息的中转文件,调试的symbols…