kubectl 命令行管理K8S

目录

陈述式资源管理方式

介绍

命令

项目的生命周期

创建    kubectl create命令

 发布    kubectl expose命令

更新    kubectl set

 回滚    kubectl rollout

 删除    kubectl delete


陈述式资源管理方式

介绍

1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
2.kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
3.kubectl 的命令大全
kubectl --help
k8s中文文档:http://docs.kubernetes.org.cn/683.html
4.对资源的增、删、查操作比较方便,但对改的操作就不容易了

可理解成使用一条kubectl命令及其参数选项来实现资源对象的管理操作

命令

查看版本信息

kubectl version

 查看资源对象简写

kubectl api-resources

 

查看集群信息

kubectl cluster-info

 

配置kubectl自动补全

source <(kubectl completion bash)

 node节点查看日志

journalctl -u kubelet -f

 获取资源的命令格式

kubectl get <resource> [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n 指定命令空间,-o 指定输出格式
resource可以是具体资源名称,如pod nginx-xxx;也可以是资源类型,如pod;或者all(仅展示几种核心资源,并不完整)
--all-namespaces 或 -A :表示显示所有命名空间,
--show-labels :显示所有标签
-l app :仅显示标签为app的资源
-l app=nginx :仅显示包含app标签,且值为nginx的资源

 查看 master 节点状态

kubectl get componentstatuses
kubectl get cs

 查看命名空间

命令空间的作用:用于允许不同 命名空间 的 相同类型 的资源 重名的

kubectl get namespace
kubectl get ns

 

 查看default命名空间的所有资源

kubectl get all [-n default]

 

 创建命名空间app

kubectl create ns app
kubectl get ns

删除命名空间app

kubectl delete namespace app
kubectl get ns			

 

 在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-wl)

kubectl create deployment nginx-wl --image=nginx  -n kube-public

 描述某个资源的详细信息

kubectl describe deployment nginx-wl -n kube-public
kubectl describe pod nginx-wl-67f75b9476-pllc4 -n kube-public

 

 查看命名空间kube-public 中的pod 信息

kubectl get pods -n kube-public

 

kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录

kubectl exec -it nginx-wl-67f75b9476-pllc4 bash -n kube-public

 

 删除(重启)pod资源,由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来

kubectl delete pod nginx-wl-67f75b9476-pllc4 -n kube-public

若pod无法删除,总是处于terminate状态,则要强行删除pod

kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod

扩缩容

kubectl scale deployment nginx-wl --replicas=2 -n kube-public	# 扩容
kubectl scale deployment nginx-wl --replicas=1 -n kube-public	# 缩容

 删除副本控制器

kubectl delete deployment nginx-wl -n kube-public
kubectl delete deployment/nginx-wl -n kube-public

项目的生命周期

创建-->发布-->更新-->回滚-->删除

创建    kubectl create命令

  • 创建并运行一个或多个容器镜像。
  • 创建一个deployment 或job 来管理容器。
 kubectl create --help

 

 启动 nginx 实例,暴露容器端口 80,设置副本数 3

kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3

 发布    kubectl expose命令

  • 将资源暴露为新的 Service
kubectl expose --help

 

为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort

kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

 Kubernetes 之所以需要 Service,一方面是因为 Pod 的 IP 不是固定的(Pod可能会重建),另一方面则是因为一组 Pod 实例之间总会有负载均衡的需求。
Service 通过 Label Selector 实现的对一组的 Pod 的访问。
对于容器应用而言,Kubernetes 提供了基于 VIP(虚拟IP) 的网桥的方式访问 Service,再由 Service 重定向到相应的 Pod。

 service 的 type 类型:

●ClusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)

●NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。
每个端口只能是一种服务,端口范围只能是 30000-32767。

●LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置Service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。
在service提交后,Kubernetes就会调用CloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的IP地址配置给负载均衡服务做后端。

●externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。

查看pod网络状态详细信息和 Service暴露的端口

kubectl get pods,svc -o wide

 查看关联后端的节点

kubectl get endpoints

 查看 service 的描述信息

kubectl describe svc nginx

 在 node01 节点上操作,查看负载均衡端口

yum install ipvsadm -y
ipvsadm -Ln

 

在 node02 节点上操作,同样方式查看负载均衡端口

yum install ipvsadm -y
ipvsadm -Ln

curl 192.168.75.30:43605
curl 10.0.0.60:80

 在master01操作 查看访问日志

kubectl logs

更新    kubectl set

  • 更改现有应用资源一些信息
kubectl set --help

 获取修改模板

kubectl set image --help

 查看当前 nginx 的版本号

curl -I http://192.168.75.20:43605

 将nginx 版本更新为 1.15 版本

kubectl set image deployment/nginx nginx=nginx:1.15

处于动态监听 pod 状态,由于使用的是滚动更新方式,所以会先生成一个新的pod,然后删除一个旧的pod,往后依次类推

kubectl get pods -w

 滚动更新详解

 DESIRED:表示期望的状态副本数
CURRENT:表示当前副本的总数
UP_TO-DATE:表示当前已经完成更新的副本数
AVAILABLE:表示当前处于 READY 状态的副本数

 

 deployment控制器更新Pod的方式是 RollingUpdate(滚动更新)
RollingUpdateStrategy(滚动更新策略):  25% max unavailable, 25% max surge

Replicas: 3 desired       控制器的期望副本数
25% max surge             滚动更新时允许创建的最大副本数或比例,向上取整
25% max unavailable       滚动更新时允许销毁的最大副本数或比例,向下取整

假设期望副本数是3,那么滚动更新时能够创建的副本数是 3 * 25% = 0.75  再向上取整为 1,能够销毁的副本数向下取整为 0
                   
假设期望副本数是10,10 * 25% = 2.5  向上取整为 3     向上取整为 2
整个滚动更新过程中Pod副本数始终处在 (10-2)<= Pod副本数 <= (10+3)之间

 再看更新好后的 Pod 的 ip 会改变

kubectl get pods -o wide

 

再看 nginx 的版本号

curl -I http://192.168.75.20:43605

 回滚    kubectl rollout

  • 对资源进行回滚管理
kubectl rollout --help

 查看历史版本

kubectl rollout history deployment/nginx

 执行回滚到上一个版本

kubectl rollout undo deployment/nginx

 

 执行回滚到指定版本

kubectl rollout undo deployment/nginx --to-revision=1

 检查回滚状态

kubectl rollout status deployment/nginx

 

 删除    kubectl delete

删除副本控制器

kubectl delete deployment/nginx

 删除service

kubectl delete svc/nginx-service

 

 

 

 

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

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

相关文章

2024年用AI自动直播有效果吗?

在如今全民直播的时代&#xff0c;做短视频和直播已经成为多数企业、实体店必备的技能之一&#xff0c;全国各个头部的品牌&#xff0c;都在纷纷加码直播&#xff0c;甚至已经开启直播矩阵的体系&#xff0c;另外中小型商家也在思考&#xff0c;如何通过抖音直播&#xff0c;让…

量子前沿:美国计算社区联盟CCC发布量子计算进展最新研报!

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨慕一 编译/排版丨沛贤 深度好文&#xff1a;1800字丨12分钟阅读 近日&#xff0c;美国计算社区联盟 (CCC) 发布了过去五年量子计算进展的最新报告。CCC还分享了美国东北大学库里计算机科…

XGB-12:在 Kubernetes 上进行分布式 XGBoost 训练

通过 Kubeflow XGBoost Training Operator 支持在 Kubernetes 上进行分布式 XGBoost 训练和批量预测。 操作步骤 为在 Kubernetes 集群上运行 XGBoost 作业&#xff0c;执行以下步骤&#xff1a; 在 Kubernetes 集群上安装 XGBoost Operator。 XGBoost Operator 旨在管理 XGB…

从零开始学Spring Boot系列-Hello World

欢迎来到从零开始学Spring Boot的旅程&#xff01;我们将从一个非常基础但重要的示例开始&#xff1a;创建一个简单的Spring Boot应用程序&#xff0c;并输出“Hello World”。 1. 环境准备 首先&#xff0c;确保你的开发环境已经安装了以下工具&#xff1a; Java Development …

word、wps插入参考文献

word 首先为参考文献自定义一个编号列表&#xff0c;开始->有序编号->定义新的编号格式&#xff0c;如下图所示&#xff1a; 在输入编号的格式中输入编号列表的形式&#xff0c;然后输入1&#xff1b;将编号样式改为1&#xff0c;2&#xff0c;3形式&#xff0c;不然就会…

dbt-core中的模型

在dbt中&#xff0c;模型&#xff08;model&#xff09;是核心概念之一&#xff0c;它代表了一个或多个SQL查询&#xff0c;这些查询定义了如何从源数据转换和构建目标数据表。除了SQL模型外,还有一个python模型,这里后面再进行探索. 以下是一些关于dbt模型的主要概念和注意事…

趣学贝叶斯定理:贝叶斯定理的先验概率、似然和后验概率(2)

4. 比较非归一化的后验概率 首先&#xff0c;我们需要求出两个后验概率的比值 P ( D ∣ H 1 ) P ( D ∣ H 2 ) \frac{P(D|H1)}{P(D|H2)} P(D∣H2)P(D∣H1)​ 接下来&#xff0c;用贝叶斯定理将其中的每一项都展开。 所以这个后验概率比值告诉我们&#xff0c;在不知道P(D)的…

PostgreSQL 与MySQL 对比使用

一、前言 博主的系统既有 用到MySQL 也有用到PostgreSQL &#xff0c;之所以用到这两种数据库&#xff0c;主要是现在都是国产替代&#xff0c;虽然说这两款数据库也不是国产的&#xff0c;但是相对开源&#xff0c;oracle是不让用了。所以现在使用比较多的就是这两个关系型数据…

Java中文乱码问题几种常见的解决方法

Java中文乱码问题通常是因为字符编码不一致导致的。以下是几种常见的解决方法&#xff1a; 1. **设置JVM编码**&#xff1a;在启动Java程序时&#xff0c;可以通过-Dfile.encodingUTF-8参数来指定JVM使用的字符编码为UTF-8。例如&#xff1a; shell java -Dfile.encodin…

基于长短期神经网络的路径跟踪,基于长短期神经网络的路径预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络的路径跟踪,基于长短期神经网络的路径预测 MATALB代码:基于长短期神经网络的路径跟踪,基于长短期神经网络的路径预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc9918351…

Docker 命令 K8S 共享卷

目录 镜像VS容器 docker常用命令 docker ps -a docker images docker build -t docker run docker rm {containerid} docker rmi {imageid} Docker Compose 服务编排 docker-compose 常用命令 K8S Pod Kubernetes 中的 Pod&#xff1a; K8S共享卷 K8S跨Pod实…

cmake 构建Qt存在多个子项目的应用

概述&#xff1a;一般在开发UI应用时候我们都会存在多个子项目&#xff0c;比如一个是主UI界面的项目&#xff0c;有些动态库的项目&#xff0c;主UI中用到子项目中的动态库&#xff0c;我们来看看如何利用cmake来构建这样的一个工程&#xff0c;方便我们在跨平台中开发(macos、…

FullCalendar日历组件:进行任务增删改,参考gitee例子修改

效果 参考路径 zxj/FullCalendar开发示例 - 码云 - 开源中国 (gitee.com) 代码 主页面&#xff1a;index.php <?php ob_start(); include(includes/session.inc); ?> <!DOCTYPE html> <html><head><title>日程管理</title><meta …

python Matplotlib Tkinter-->tab切换3

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox import …

this、闭包与作用域

this、闭包与作用域 this指针详解 函数的this关键字在JavaScript中的表现略有不同&#xff0c;此外&#xff0c;在严格模式和非严格模式之间也会有一些差别。在绝大多数情况下&#xff0c;函数的调用方式决定了this的值(运行时绑定)。 this关键字是函数运行时自动生成的一个内…

MySQL认证方法介绍

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; MySQL数据库的认证方法对于确保数据安全和维护系统完整性至关重要。在MySQL中&#xff0c;有多种认证方法可供选择&#xff0c;每种方法都有其特定的用途和配置方式。本文将详细…

2024.1.9-1.24

2024.1.9 TUE 类路径 feign远程调用 content-service的test调用media-api的如下接口&#xff0c;用来上传图片 nginx的代理 如上图&#xff0c;proxy_pass 后面跟的代理到的地址后面须有/否则不生效&#xff01;&#xff01;&#xff01;&#xff01; content-service定义…

C++的发展历史、简介及应用

文章目录 一、C的来历及诞生背景二、C的每个版本时间三、C的详细应用领域 一、C的来历及诞生背景 C是一种编程语言&#xff0c;它是在C语言的基础上发展而来的。 C的作者&#xff1a;C的创始人是丹尼斯里奇&#xff08;Dennis Ritchie&#xff09;和贝尔实验室的团队。他们在2…

医学试纸条图像处理技术

医学试纸条图像处理是一个重要的领域&#xff0c;它涉及到从医学试纸条上提取和分析信息的各种技术。这里是一些常见的工作步骤&#xff1a; 一、图像预处理&#xff1a;在处理任何图像之前&#xff0c;通常需要进行预处理步骤&#xff0c;以改善图像质量并准备后续分析。这可…

ETH Denver见!来参加DAO的领袖和爱好者的活动吧

我们将和 DAOBase 在美国丹佛举办 DAO 领袖和爱好者的盛会——“去中心化对话&#xff1a;DAO 治理的新时代”活动&#xff01; 随着加密货币和区块链技术的快速发展&#xff0c;DAO 已成为数字经济不可或缺的一部分。目前&#xff0c;已有超过 10 万个 DAO&#xff0c;拥有超…