k8s的陈述式管理

k8s的陈述式管理:

所谓的陈述式管离=也就是命令行工具

优点:90%以上都可以满足

对资源的增删查比较方便,对改不是很友好

缺点:命令比较冗长,复杂,难记

声明式:

k8s当中的YAML文件来实现资源管理----声明式

GUI:图形化工具管理

今天的主要任务:

1.kubectl命令的详解 查看 部署 查看pod的情况(详细信息和日志以及如何发布和回滚)

k8s命名行大全:

http://docs.kubernetes.org.cn/683.html

查看版本

kubectl version

查看所有api的资源对象名称

kubectl api-resources

查看k8s集群的信息

kubectl cluster-info

查看master节点的状态

kubectl get cs

查看默认命名空间的内的pod信息

kubectl get pods

查看当前集群所有的命名空间

kubectl get ns

查看指定命名空间内的pod,需要加-n 后面更上命名空间的名称

kubectl get pod -n kube-system

查看默认命名空间内pod的详细信息

kubectl get pod -o wide

查询节点信息和状态

kubectl get nodes

查看node节点的详细信息

kubectl get nodes -o wide

查看已经部署好的pod信息

kubectl get pod

查看已经部署好的pod的详细信息

kubectl describe pod nginx-5f447ccb-9vkjp (pod名)

查看指定命名空间的pod

kubectl describe pod -n kube-system etcd-master01

如何查看pod内部的日志

kubectl logs nginx-5f447ccb-9vkjp

动态查看

kubectl logs -f nginx-5f447ccb-9vkjp

如何创建,删除命名空间

如何删除pod

先声明动作,再删除

如何对pod部署

Deplyoment的部署pod:

陈述式部署:命令行

声明式:YAML文件部署

滚动更新:不式一次性的包所有pod全部部署,而是一个一个来,pod的更新时使用,他的状态是逐渐的引用新的pod,逐渐的减旧的pod

自我修复,如果有pod节点发生故障,deplayment会自动启动新的pod来进行代替

回滚:如果更新有问题,deployment会手动还原到未更新前的状态

扩容和缩容:deployment可以随时调整pod的数量。以适应流量的变化

上述的功能必须是基于deployment创建的服务才可以,绝大多数的pod创建都是deployment

查看当前集群当中默认命名空间里面的deployment创建的

kubectl get deployments.apps

daemonsets.apps 方式的创建方式

kubectl get daemonsets.apps

kubectl get daemonsets.apps -n kube-system

daemonsets.apps:不能通过命令行的方式创建,只能在YAML文件当中创建方式,后台运行创建,在每一个节点上都创建一个相同方式的,相同版本的容器运行的pod

一般都是依赖环境和重要组件,一般也不会对这些资源进行操作

演示指定命名空间创建

kubectl create ns kobe

kubectl create deployment nginx-kobe --image=nginx --replicas=3 -n kobe

kubectl get pod -n kobe

如何删除pod

注意:如果是deployment方式创建的pod,或者是daemonset方式创建的pod,是由控制器创建的pod,使用delete删除pod是删不掉的,相当于重启pod

那怎么删除呢

kubectl delete deployments.apps nginx-wdf

指定命名空间删除

kubectl delete -n kobe deployments.apps httpd-kobe

基于deployment方式创建的pod,一旦删除deployment,基于这个deployment创建的pod都会被删除

查看创建方式

kubectl get deployments.apps nginx

远程进入节点容器:

kubectl get pod -o wide

kubectl exec -it nginx-5f447ccb-vd8w8 bash

Docker的exec只能在本机内部使用,不能跨主机,kubectl exec可以跨主机进入容器

指定命名空间进入容器

kubectl create deployment nginx-kobe1 --image=nginx -n kobe

kubectl get pod -n kobe

kubectl exec -it -n kobe nginx-kobe1-7bfdff54bf-p55nr bash

快速结束容器

 kubectl delete pod nginx-kobe-79f486588-c26qn --force --force --grace-period=0

grace-period=0:表示过渡的存活期,默认是30秒,可以让容器优雅的结束容器内的进程,然后退出pod,等于0表示立刻退出,但是前面必须要有--force

注意:还是没有根除,还是等于重启,主要是用于结束卡在销毁状态的pod,为了就是快速重启,节约时间

如何对的deployment创建的扩缩容replicas指定副本数

 kubectl scale deployment nginx-kobe --replicas=5

 kubectl scale deployment nginx-kobe --replicas=1

创建时并没有指定副本数,后续也可以对他的副本数进行修改,仅限于deployment模式

如何把服务的service进行发布:

kubectl create deployment nginx --image=nginx:1.10 --replicas=3

Service的类型;

kubectl get service -n kube-system 指定查看

第一种类型ClusterIP:

创建service的默认类型,提供一个集群内部的虚拟IP地址,这是service的默认类型,通过这个虚拟IP可以直接访问pod的资源,仅限于内部访问,无法对外进行访问

第二种类型NodePort(常用):

会在每个node节点上都开放一个相同的端口,外部可以通过node的本机IP+端口,访问pod资源,这是集群外部访问service资源的一种方式,四层代理方式

Nodeip:nodeport

随机指派,也可以指定,范围在30000-32767

如和创建呢,还是基于deployment创建pod

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

--port=80 servicce集群的端口(集群内部访问的端口,可以改动)

--target-port=80  pod内部容器的端口(一般是固定的)

[root@master01 ~]# kubectl get svc

NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE

kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP        24h

nginx-service   NodePort    10.96.114.241   <none>        80:30691/TCP   10s

10.96.114.241 :集群内部的IP地址,外部不可用访问这个IP地址的

80:对应的是内部的service的端口

30691:和内部service的80端口做映射

解析图:

实现负载均衡:

分别进入三个容器

kubectl exec -it nginx-6799fc88d8-dz5g4 bash

这只是内部访问端口

外部访问端口,本机IP+端口

改端口:

kubectl get service

第三种模式LoadBalancer:

如果service的类型设定为LoadBalancer,映射地址(云平台提供LoadBalancer的地址),这种用法仅用于公有云服务供应在云平台上设置的service的场景,外部来访问,实现负载均衡,LoadBalancer这个地址是要付费的,不是免费的

创建好了service,指定类型为LoadBalancer,会给你提供一个地址来代理pod内部的IP地址

演示

kubectl expose deployment nginx1 --port=8080 --target-port=80 --name=nginx1-service --type=LoadBalancer

内部访问没问题

第四种类型ExternalName:

DNS映射,给service分配一个域名,通过域名来访问后端pod资源,ExternalName的service类型,不能提供负载均衡,必须要设置一个ExternalName的地址可以实现

配置文件演示:

kubectl get service

做映射

访问测试

不能实现轮询,不能提供IP地址,只能通过映射访问

更新和回滚以及发布方式:

项目的生命周期:

创建(已演示)------发布(已演示)------更新------回滚--------删除

//获取修改模板

kubectl set image --help

//查看当前 nginx 的版本号

curl - I 20.0.0.71:30691

//将nginx 版本更新为 1.15 版本

kubectl set image deployment/nginx nginx=nginx:1.15

动态查看更新情况

kubectl get pod -w

回滚:

查看还原点:

 kubectl rollout history deployment nginx1

数字的大小决定了距离上次操作远近,数字越大,就是你最近一次的操作

#加入record可以现在变更的原因:

kubectl set image deployment nginx1 nginx=nginx:1.15 --record

回到还原点:

kubectl rollout undo deployment nginx1 --to-revison=1

查看还原状态

Kubectl rollout status deployment nginx1

动态查看更新情况

kubectl get pod -w

查看全部

kubectl get all -o wide

kubectl get all -o wide -n kube-system

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

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

相关文章

对接第三方接口鉴权(Spring Boot+Aop+注解实现Api接口签名验证)

前言 一个web系统&#xff0c;从接口的使用范围也可以分为对内和对外两种&#xff0c;对内的接口主要限于一些我们内部系统的调用&#xff0c;多是通过内网进行调用&#xff0c;往往不用考虑太复杂的鉴权操作。但是&#xff0c;对于对外的接口&#xff0c;我们就不得不重视这个…

Axure骚操作:【制作可暂停与不可暂停进度加载条】

目录 一、不可暂停进度条 1.1 前期准备 1.2 效果假想 1.3 适用场景 1.4 实现步骤 &#xff08;1&#xff09;除按钮外的元件设置隐藏 &#xff08;2&#xff09;给按钮添加交互 &#xff08;3&#xff09;给变量值文本标签添加交互 &#xff08;4&#xff09;给进度条矩…

android开发百度地图api实现定位图标随手机方向转动

该功能的实现依赖于手机中的传感器元件如陀螺仪、加速度计等&#xff0c;具体开发详见android的官方开发文档&#xff1a; 传感器概览 | Android 开发者 | Android Developershttps://developer.android.com/guide/topics/sensors/sensors_overview?hlzh-cn要自定义一个传…

zookeeper之集群搭建

1. 集群角色 zookeeper集群下&#xff0c;有3种角色&#xff0c;分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader)&#xff1a; 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保…

【Spring Security】认证之案例的使用、MD5加密、CSRF防御

目录 一、引言 1、什么是SpringSecurity认证 2、为什么使用SpringSecurity之认证 3、实现步骤 二、快速实现&#xff08;案例&#xff09; 1、添加依赖 2、配置 3、导入数据表及相关代码 4、创建登录页及首页 5、创建配置Controller 6、用户认证 6.1、用户对象User…

【LabVIEW FPGA入门】创建第一个LabVIEW FPGA程序

本教程仅以compactRIO&#xff08;FPGA-RT&#xff09;举例 1.系统配置 1.1软件安装 FPGA-RT 1. LabVIEW Development System (Full or Professional) 2. LabVIEW Real-Time Module 3. LabVIEW FPGA Module 4. NI-RIO drivers 1.2硬件配置 1.使用线缆连接CompactRIO至主机…

uniapp的css样式图片大小截图展示

目录 截取图片前截取图片后第一种方式&#xff1a;代码第二种方式&#xff1a;代码最后 截取图片前 截取图片后 第一种方式&#xff1a;代码 <view class"swiper-box-img"><image class"swiper-box-img-img" :src"item.file_path" mod…

ARM CCA机密计算架构软件栈之软件组件介绍

在本节中,您将了解Arm CCA的软件组件,包括Realm World和Monitor Root World。以下图表展示了Arm CCA系统中的软件组件: 在这个图表中,世界之间的边界显示为粗虚线。由较高权限的软件强制执行的较低权限软件组件之间的边界显示为细虚线。例如,非安全EL2处的虚拟机监视器强制…

java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

Jenkins的Transfers路径怎么配置,解决Transfers配置不生效的问题

Transfers配置: 1.配置Source files: 要填写jar包的相对路径,从当前项目工作空间的根目录开始,看看我的工作空间你就懂了 !如图 我填的是 parent/build/libs/parent-1.0.0.jar,即不要 fdw1/ 的前缀 2.配置Remote directory: 远程目标文件夹,也就是你jar包要放到远程…

第一个Python程序

安装好python解释器之后呢&#xff0c;我们打开PyCharm 这里选择使用本地解释器 注意这个python.exe的路径&#xff0c;AppData是隐藏文件夹 创建完成项目之后&#xff0c;点击new->Python File 写入 print(hello world)输出

分布式【zookeeper面试题12连问】

1. 面试官&#xff1a;工作中使用过Zookeeper嘛&#xff1f;你知道它是什么&#xff0c;有什么用途呢&#xff1f; 「小菜鸡的我&#xff1a;」 有使用过的&#xff0c;使用ZooKeeper作为**「dubbo的注册中心」&#xff0c;使用ZooKeeper实现「分布式锁」**。ZooKeeper&#…

Kafka安全认证机制详解之SASL_PLAIN

一、概述 官方文档&#xff1a; https://kafka.apache.org/documentation/#security 在官方文档中&#xff0c;kafka有五种加密认证方式&#xff0c;分别如下&#xff1a; SSL&#xff1a;用于测试环境SASL/GSSAPI (Kerberos) &#xff1a;使用kerberos认证&#xff0c;密码是…

elasticsearch列一:索引模板的使用

概述 近期一直在负责es这块&#xff0c;就想着和大家分享一些使用经验&#xff0c;我们从存储、查询、优化、备份、运维等几个方面来做分享。今天咱们先看下如何更加合理的存储数据。 初见索引模板 记得刚接触es还是18年那会&#xff0c;项目上线后因一些原因导致日志这部分的…

C语言——小细节和小知识7

一、逆序字符串 1、递归1 #include <stdio.h> #include <string.h>void ReverseArray(char *str) {char temp *str;//1int len (int)strlen(str);*str *(str len - 1);//2*(str len - 1) \0;//3if(strlen(str 1) > 2)//只要字符串还大于2&#xff0c;就…

企业微信开发:自建应用:获取企业微信IP段(用于防火墙配置)

概述 在企业微信开发流程中&#xff0c;为了确保与企业微信API的网络通信安全&#xff0c;并适应防火墙配置要求&#xff0c;开发者需要获取企业微信API服务的IP地址范围。这样&#xff0c;仅允许与企业微信官方通信的合法请求通过防火墙&#xff0c;从而保障数据传输的安全性…

SpringBoot整合多数据源,并支持动态新增与切换

SpringBoot整合多数据源&#xff0c;并支持动态新增与切换 一、概述 在项目的开发过程中&#xff0c;遇到了需要从数据库中动态查询新的数据源信息并切换到该数据源做相应的查询操作&#xff0c;这样就产生了动态切换数据源的场景。为了能够灵活地指定具体的数据库&#xff0…

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

更新Xcode14后低版本iPhone调试报错 dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib Referenced from: /var/containers/Bundle/Application/…/….app/… Reason: image not found 这是缺少libswiftCoreGraphics库 直接导入libswiftCoreGraphics库即…

python小工具之弱密码检测工具

一、引用的python模块 Crypto&#xff1a; Python中一个强大的加密模块&#xff0c;提供了许多常见的加密算法和工具。它建立在pyc.ypodome或pyc.ypto等底层加密库之上&#xff0c;为Python程序员提供了简单易用的API&#xff0c;使其可以轻松地实现各种加密功能。 commands…

2024新年快乐

前言 2023年马上就要过去&#xff0c;希望2024年会越来越好&#xff0c;根据自己学的内容来实现一些我的idea。 单片机 思路 最开始的构思是这样的&#xff0c;“2024”用数码管来输出然后中文的“新年快乐”用点阵来实现&#xff0c;但是点阵是动态的截图不好看&#xff0…