Kubectl 使用详解——k8s陈述式资源管理

目录

一、kubectl 简介 

二、kubectl 的使用

1.基础用法

(1)配置kubectl自动补全

(2)查看版本信息

(3)查看资源对象信息 

(4)查看集群信息

(5)查看日志

2.查看k8s集群信息

(1) 查看master节点状态

(2)查看命名空间

(3)创建和删除命名空间

3.创建和删除pod

(1)指定pod控制器和容器镜像创建pod

(2)删除pod

4.查看资源详细信息

5.登入容器

6.扩缩容

三、项目的生命周期

1.创建

2.发布

3.更新

4.回滚

5.删除

四、金丝雀发布

1.创建deployment

2.暴露服务 

3.更新并在第一轮完成后暂停

4.测试无误后继续更新 


一、kubectl 简介 

        kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径。

        对资源的增、删、查操作比较方便,但对改的操作就不容易了。

kubectl的命令大全:kubectl --help
k8s中文文档: http://docs.kubernetes.org.cn/683.html

二、kubectl 的使用

1.基础用法

(1)配置kubectl自动补全

source <(kubectl completion bash)        #在当前shell环境中配置kubectl自动补全

                                                               (可以在 /etc/bashrc 中添加此命令实现全局添加)

(2)查看版本信息

kubectl version        #查看版本信息(建议与当前k8s版本一致)

(3)查看资源对象信息 

kubectl api-resources

(4)查看集群信息

kubectl cluster-info

kubectl cluster-info dump        #显示详细信息

(5)查看日志

kubectl logs 资源名称 [-c 容器名] [-f]        #查看容器日志 [ 指定pod中的容器 ]  [ 跟踪显示 ]

journalctl -u kubelet           #查看节点日志

journalctl -u kubelet -f        #跟踪显示

2.查看k8s集群信息

kubectl get <resource> [选项]                    #查看指定资源的信息

                                  -n 命名空间                #指定命名空间(不加默认是defaults资源)

                                  -o wide | json | yaml   #指定输出格式

resource可以是具体资源名称,如nginx;也可以是资源类型,如pods;或者all(仅展示几种核心资源,并不完整)
--all-namespaces 或-A :表示显示所有命令空间
--show-labels:显示所有标签
-l 标签:仅显示指定标签的资源
-l 标签=值:仅显示包含指定标签, 且值为指定值的资源

-w:持续跟踪输出

(1) 查看master节点状态

kubectl get cs

kubectl get componentstatuses

(2)查看命名空间

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

kubectl get ns        #从此条命令获取到的命名空间名,即可用于get 的 -n 选项
kubectl get namespaces

(3)创建和删除命名空间

kubectl create/delete namespace 命名空间名

kubectl create/delete ns 命名空间名

注:删除命名空间会将其下的资源全部删除,所以慎用 

3.创建和删除pod

(1)指定pod控制器和容器镜像创建pod

kubectl create <pod控制器名> <pod名称> --image=镜像名

                          Deployment:无状态应用部署

                          Statefulset:有状态应用部署

                          Replicaset:副本数量控制器

                          Daemonset:确保所有节点运行同一类 Pod

                          Cronjob:计划性任务

                          ...

(2)删除pod

但由于存在deployment/rc之类的副本控制器期望副本数量,删除pod也会重新拉起来。真正需要删除,需要删除其控制器。

kubectl delete pods <pod名>

                                               --force --grace-period=0         #添加该选项强制删除(无需等待)

4.查看资源详细信息

kubectl describe 资源类型

kubectl describe 资源类型/pod名

5.登入容器

kubectl exec -it pod名 -c 容器名 bash/sh        #区别于docker exec只能登入本机的docker

                                    #如果pod中只有一个容器,则无需-c指定

kubectl exec -it pod名 -c 容器名 -- 命令        #可以实现不进入容器执行 -- 后的命令

6.扩缩容

kubectl scale 资源名 --replicas=n        #n为数字,大于当前副本数则是扩容,小于则是缩容

三、项目的生命周期

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

1.创建

创建并运行一个或多个容器镜像;创建一个deploy或 job管理容器。

kubectl create deployment 控制器名 --image=镜像名 --port=pod端口 --replicas=n

2.发布

将资源暴露为新的service

        Kubernetes 之所以需要service,一方面是因为Pod 的IP 不是固定的(Pod可能会重建),另一方面则是因为一组Pod 实例之间总会有负载均衡的需求。

        Service 通过Label Selector 实现的对一组的 Pod的访问。        

        对于容器应用而言,Kubernetes 提供了基于VIP(虚拟)网桥的方式访问Service,再由 service重定向到相应的 Pod。

service 的 type 类型:
●ClusterIP:提供一个集群内部的虚拟IP以供k8s集群内部访问(service默认类型)
●NodePort:在每个Node节点上开启一个端口,K8S集群内外的用户都可以通过 Node Ip:NodePort 的方式使Kubernetes集群外部的程序可以访问service。
●LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云很务提供商的云平台上没置service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。
        在service提交后,Kubernetes就会调用cloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的地址配置给负载均衡服务做后端。
●ExternalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让pod去访问集群外部的资源,它本身没有绑定任何的资源。

serivce 和 pod 的端口:
●port:serivce 的 ClusterIP 所使用的端口
●nodePort:NodePort类型的service所定义的 在每个Node节点上开启的端口(默认端口范围30000~32767)
●targetPort:以上port或nodePort 所要转发到的后端 Pod 的端口

●containerPort:后端 Pod 的容器 所使用的端口

暴露默认的 ClusterIP 类型服务

kubectl expose deployment 控制器名称 --name=服务名称 --port=服务端口 --target-port=pod端口

暴露 NodePort 类型服务 

kubectl expose deployment 控制器名称 --name=服务名称 --port=服务端口 --target-port=pod端口 --type=NodePort

以上转发可以在ipvsadm中查看到(我们配置使用的是ipvs转发,性能最好)

3.更新

可以对以下资源进行更新

#示例:对指定pod控制器的镜像版本镜像更新

kubectl set image deployment nginx-test nginx=nginx:1.18      

4.回滚

回滚操作的使用方式

kubectl rollout history pod控制器 控制器名        #查看该资源的更新历史

kubectl rollout undo pod控制器 控制器名 [--to-revision=n]      #回滚资源上一个[ 指定的 ]记录

kubectl rollout status pod控制器 控制器名          #查看回滚事务状态

5.删除

删除所有资源代表一个项目的结束

kubectl delete pod控制器 控制器名称        #删除pod控制器

kubectl delete 服务 服务名称                     #删除服务

四、金丝雀发布

        Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,
仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。

1.创建deployment

2.暴露服务 

3.更新并在第一轮完成后暂停

4.测试无误后继续更新 

至此就完成了金丝雀发布过程

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

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

相关文章

手敲Cocos简易地图编辑器:人生地图是一本不断修改的书,每一次编辑都是为了克服新的阻挡

引言 本系列是《8年主程手把手打造Cocos独立游戏开发框架》&#xff0c;欢迎大家关注分享收藏订阅。 在上一篇文章&#xff0c;笔者给大家讲解了在Cocos独立游戏开发框架中&#xff0c;如何自定义实现Tile地图管理器&#xff0c;成功地在游戏中优化加载一张特大的地图。接下来…

uni-app 之 获取网络列表数据

uni-app 之 获取网络列表数据 image.png <template><!-- vue2的<template>里必须要有一个盒子&#xff0c;不能有两个&#xff0c;这里的盒子就是 view--><view>--- uni.request 网络请求API接口 ---<view v-for"(item) in caturl" :key&…

git 远程多分支,本地如何切换分支

1、git clone url 先clone 项目&#xff0c;git branch -a 查看所有分支&#xff0c;发现有多个远程分支 2、假如想在 remote 分支工作&#xff0c;但是本地还没有 remote 分支&#xff0c;可以先输入命令&#xff1a; git checkout &#xff0c;不要按回车键&#xff0c;按…

JAVA毕业设计097—基于Java+Springboot+Vue+uniapp的医院挂号小程序系统(源码+数据库)

基于JavaSpringbootVueuniapp的医院挂号小程序系统(源码数据库)097 一、系统介绍 本系统前后端分离(网页端和小程序端都有) 本系统分为管理员、医院、用户三种角色(角色菜单可自行分配) 用户功能&#xff1a; 注册、登录、医院搜索、最新资讯、医生搜索、挂号预约、挂号记…

如何在Windows中使用C#填写和提取PDF表单

如何在Windows中使用C#填写和提取PDF表单 PDF表单不仅允许用户填写和提交数据&#xff0c;也允许用户创建各种表单域收集用户的数据&#xff0c;并通过提取表单字段值&#xff0c;将收集和合并提交的数据进一步分析或处理。PDF通过电子方式填写、保存和共享的形式&#xff0c;…

1.8 工程相关解析(各种文件,资源访问

目录 1.8 工程相关解析(各种文件&#xff0c;资源访问) 分类 Android 基础入门教程 本节引言&#xff1a; 1.工程项目结构解析&#xff1a; 1.res资源文件夹介绍&#xff1a; 2.如何去使用这些资源 2.深入了解三个文件&#xff1a; MainActivity.java&#xff1a; 布局…

【UE】材质描边、外发光、轮廓线

原教学视频链接&#xff1a; ue4 材质描边、外发光、轮廓线_哔哩哔哩_bilibili 步骤 1. 首先新建一个材质&#xff0c;这里命名为“Mat_outLine” 在此基础上创建一个材质实例 2. 在视口中添加一个后期处理体积 设置后期处理体积为无限范围 点击添加一个数组 选择“资产引用”…

牛客网——BM62 斐波那契数列

class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param n int整型 * return int整型*/int Fibonacci(int n) {// write code hereif(n0) //考虑第0项return 0;else if(n1||n2)return 1;else…

深入了解 Axios 的 put 请求:使用技巧与最佳实践

在前端开发中&#xff0c;我们经常需要与后端服务器进行数据交互。其中&#xff0c;PUT 请求是一种常用的方法&#xff0c;用于向服务器发送更新或修改数据的请求。通过发送 PUT 请求&#xff0c;我们可以更新服务器上的资源状态。 Axios 是一个流行的 JavaScript 库&#xff0…

开源知识库平台Raneto

什么是 Raneto &#xff1f; Raneto 是一个开源知识库平台&#xff0c;它使用静态 Markdown 文件来支持您的知识库。 官方提供了 doc & demo 网站&#xff0c;即是帮助文档&#xff0c;也是个 demo&#xff0c;地址&#xff1a;https://docs.raneto.com 准备 项目使用con…

微服务井喷时代,我们如何规模化运维?

随着云原生技术发展及相关技术被越来越多运用到公司生产实践当中&#xff0c;有两种不可逆转的趋势&#xff1a; 1、微服务数量越来越多。原来巨型单体服务不断被拆解成一个个微服务&#xff0c;在方便功能复用及高效迭代的同时&#xff0c;也给运维带来了不少挑战&#xff1a;…

pytorch学习——LSTM和GRU

参考书籍&#xff1a;https://zh-v2.d2l.ai/chapter_recurrent-modern/lstm.html 参考论文&#xff1a; https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 简介&#xff1a; LSTM&#xff08;长短期记忆网络&#xff09;和GRU&#xff08;门控循环单元&#xff09;…

Yolov5 中添加注意力机制 CBAM

Yolov5 中添加注意力机制 CBAM 1. CBAM1.1 Channel Attention Module1.2 Spatial Attention Module1.3 Channel attention 和 Spatial attention 如何去使用 2. 在Yolov5中添加CBAM模块2.1 修改common.py 文件2.2 修改yolo.py 文件2.3 修改网络配置yolov5x-seg.yaml文件 3. 训练…

C# WPF 自己写的一个模拟病毒传播的程序,有可视化

源代码: https://github.com/t39q/VirusSpread 主要代码 using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace VirusSpread.Bu…

LeetCode-17-电话号码的字母组合

一&#xff1a;题目描述&#xff1a; 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 二&#xff1a;示例与提示 示例 1:…

【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 问题分析、数学模型及python代码实现

【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 1 题目 C题蔬菜类商品的自动定价与补货决策 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&…

js函数变量提升理解

var n 10function fn() {// var n 20function f() {// 没用var声明&#xff0c;去外层寻找n,直到找到windows为止&#xff0c;找到的话用的就是哟个全局变量&#xff0c;会改变原始全局变量的值n;console.log(n)}var nn 20f()console.log(n);return f}var x fn()// 会在上一…

爱胜品YPS-1133DN系列打印机网络驱动安装的一点小经验

爱胜品YPS-1133DN打印机基本参数&#xff1a; 项目 详细参数 品牌 ICSP爱胜品 外观配色 上灰下白经典实用设计 打印速度 33ppm&#xff08;A4&#xff09;、35ppm&#xff08;Letter&#xff09;、58ppm&#xff08;A5&#xff09; 首页打印时间 ≤8秒 最大月打印量 …

Zebec Protocol 成非洲利比亚展会合作伙伴,并将向第三世界国家布局

在 9 月 6 日&#xff0c;The Digital Asset Summit ’23&#xff08;利比亚大会&#xff09;在尼日利亚首度阿布贾的 NAF 会议中心举办&#xff0c;该会议对 Web3 领域在非洲地区的发展进行了探索&#xff0c;旨在推动非洲地区区块链产业的进一步发展&#xff0c;据悉该会议室…

华为Mate 60和iPhone 15选哪个?

最近也有很多朋友问我这个问题来着&#xff0c;首先两款手机定位都是高端机&#xff0c;性能和体验各有千秋&#xff0c;各自有自己的铁杆粉。 但是让人意想不到的是华为mate60近日在海外越来越受欢迎和追捧&#xff0c;甚至是引起了不少人的抢购&#xff0c;外观设计和…