容器技术与应用(第2版)(微课版) 课件 任务6.2 Kubernetes的基本操作_第1页
容器技术与应用(第2版)(微课版) 课件 任务6.2 Kubernetes的基本操作_第2页
容器技术与应用(第2版)(微课版) 课件 任务6.2 Kubernetes的基本操作_第3页
容器技术与应用(第2版)(微课版) 课件 任务6.2 Kubernetes的基本操作_第4页
容器技术与应用(第2版)(微课版) 课件 任务6.2 Kubernetes的基本操作_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Docker容器技术与应用湖北轻工职业技术学院Kubernetes概述及基本操作项目6项目背景随着容器技术的迅速发展,企业对容器化应用的管理和部署需求日益增长。传统方式难以满足应用大规模、高效运行的要求。Kubernetes应运而生,作为Google开源的容器编排引擎,能有效解决这些问题。Kubernetes概述及基本操作项目6

Kubernetes是Google开源的容器编排引擎,它提供了自动化部署、大规模可伸缩、应用容器化管理等功能。本项目通过两个任务介绍了Kubernetes的发展及其基本操作,并以RHEL8.1操作系统为基础,介绍了使用kubeadm安装Kubernetes集群的方法和kubectl命令的使用方法。项目六:Kubernetes概述及基本操作目录任务6.1、Kubernetes概述任务6.2、Kubernetes的基本操作Kubernetes概述回顾1、Kubernetes的概念及架构。2、Kubernetes集群的安装方法。知识目标理解kubectl命令的使用方法。能力目标掌握kubectl的运维命令。素质目标锻炼学生沟通交流的能力。培养自主钻研的工匠精神。工程师小王在编写完Kubernetes安装手册后,为利于公司相关技术人员对Kubernetes集群管理内容的了解,编写了kubectl命令手册,以方便公司相关技术人员学习。任务6.2Kubernetes的基本操作任务要求6.2kubectl概述Kubectl是Kubernetes命令行工具,它是Kubernetes的主要管理工具之一。通过kubectl,用户可以与Kubernetes集群进行交互,管理容器、Pod、服务、部署等各种资源对象。Kubectl的主要功能包括以下几个方面:部署应用:kubectl可以用来创建、更新和删除部署、副本集、DaemonSet等应用资源。管理Pod:kubectl可以用来创建、更新和删除Pod,以及查看Pod的状态、日志和运行情况等。管理服务:kubectl可以用来创建、更新和删除服务资源,并查看服务的状态和IP地址等。管理配置:kubectl可以用来管理Kubernetes中的配置信息,包括ConfigMap和Secret等。扩容与缩容:kubectl可以用来扩容和缩容部署和副本集等资源对象。访问KubernetesAPI:kubectl可以用来访问KubernetesAPI,以便于查询和修改Kubernetes资源对象。调试应用:kubectl可以用来调试应用程序,包括查看Pod日志、执行进入容器等操作。总之,kubectl是Kubernetes中最常用的命令行工具之一,它提供了丰富的功能,使得用户可以方便地管理和操作Kubernetes集群。6.2任务6.2Kubernetes的基本操作相关知识任务6.2Kubernetes的基本操作相关知识6.2kubectl概述kubectl是Kubernetes集群的命令行工具。使用kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。kubectl命令格式如下。kubectl[command][TYPE][NAME][flags]其各参数说明如下。(1)command:指定要对资源执行的操作的子命令。(2)TYPE:指定要操作的资源对象,资源对象区分英文字母大小写。(3)NAME:指定要操作资源的名称,名称区分英文字母大小写。如果省略名称,则会显示所有的资源。(4)flags:指定可选的参数任务6.2Kubernetes的基本操作相关知识6.2kubectl概述flag参数的选项及作用如表6-1所示。任务6.2Kubernetes的基本操作相关知识6.2kubectl概述flag参数的选项及作用如表6-1所示。任务6.2Kubernetes的基本操作相关知识6.2kubectl概述kubectl命令支持命令自动补全功能。在Linux系统下,可执行以下操作添加kubectl命令自动补全功能。#yum-yinstallbash-completion#echo"source<(kubectlcompletionbash)">>~/.bashrc任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令1.kubectlapply命令kubectlapply命令主要利用相关的配置文件对集群对象执行增、改操作。其命令格式如下。kubectlapply-fFILENAME[options]-f参数后添加YAML或JSON格式的资源配置文件。如果配置文件中的资源在集群中不存在,则创建这个资源;如果存在,则根据配置对资源字段进行更新。例如,利用deployment-nginx.yaml配置文件创建资源的代码如下。#kubectlapply-fdeployment-nginx.yaml任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令2.kubectlcreate命令kubectlcreate命令主要根据配置文件或输入的代码创建集群的资源。其命令格式如下。kubectlcreate-fFILENAME[flags]例如,创建各类资源的示例如下。#kubectlcreate-f./my-manifest.yaml //创建资源#kubectlcreate-f./my1.yaml-f./my2.yaml //使用多个文件创建资源#kubectlcreate-f./dir //使用目录中的所有清单文件创建资源也可以直接使用子命令[namespace/secret/configmap/serviceaccount]等创建相应的资源。#kubectlcreatedeploymentmy-dep--image=busybox//创建一个deployment任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令kubectlapply命令和kubectlcreate命令的区别1.设计理念kubectlcreate属于

命令式(Imperative)管理:直接告诉Kubernetes做什么(例如:“创建一个资源”)。适用于一次性操作,如临时创建资源,不关注后续变更管理。kubectlapply属于

声明式(Declarative)管理:告诉Kubernetes期望的最终状态是什么(例如:“确保资源按这个YAML文件定义的状态存在”)。适用于长期维护资源,支持持续更新和状态合并。任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令kubectlapply命令和kubectlcreate命令的区别行为kubectlcreatekubectlapply资源存在时的操作报错(资源已存在,无法重复创建)自动合并变更(更新现有资源)输入依赖必须指定文件(如

-ffile.yaml)必须指定文件(如

-ffile.yaml)底层机制直接调用KubernetesAPI的

Create

操作调用

Apply

操作(基于差异合并的PATCH)版本控制无版本记录通过注解(last-applied-configuration)记录配置历史任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令kubectlapply命令和kubectlcreate命令的区别如何选择?场景推荐命令临时创建资源,无需后续更新kubectlcreate长期维护资源,需持续更新kubectlapply更新已被其他方式修改过的资源kubectlapply--force(谨慎使用)完全覆盖现有资源配置(非合并)kubectlreplace-ffile.yaml任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令3.kubectldelete命令kubectldelete命令可用于删除对象。其命令格式如下。kubectldelete(-fFILENAME\|TYPE[NAME\|/NAME\|-llabel\|–all])[flags]例如,删除各类对象的示例如下。#kubectldelete-fxxx.yaml //删除一个配置文件对应的资源对象#kubectldeletepod,servicebazfoo //删除名称为baz或foo的Pod和Service#kubectldeletepods,services-lname=myLabel //-l参数可以删除包含指定Label的资源对象#kubectldeletepodfoo--grace-period=0--force //强制删除一个Pod任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令4.kubectlreplace命令kubectlreplace命令用于对已有的资源进行更新、替换操作。其命令格式如下。kubectlreplace-fFILENAMEkubectlreplace命令可更新副本数量、修改Label、更改image版本等,但名称不能更新。如果更新Label,则原有标签的Pod将会与更新Label后的rc断开连接,并会创建指定副本数的新Pod,但是默认不会删除原有的Pod。#kubectlreplace-f./pod.json//使用pod.json中的数据替换Pod#kubectlreplace--force-f./pod.json //强制替换、删除原有资源,创建新资源任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令5.kubectlpatch命令kubectlpatch命令用于在容器运行时对容器属性进行修改。其命令格式如下。kubectlpatch(-fFILENAME\|TYPENAME\|TYPE/NAME)–patchPATCH[flags]例如,修改容器属性的示例如下。#kubectlpatchnodek8s-node-1-p'{"spec":{"unschedulable":true}}' //使用patch更新Node#kubectlpatch-fnode.json-p'{"spec":{"unschedulable":true}}' //使用patch更新“node.json”文件中指定类型和名称的节点#kubectlpatchpodrc-nginx-2-kpiqt-p'{"metadata":{"labels":{"app":"nginx-3"}}}' //使用patch将Pod的Label修改为app=nginx-3任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令6.kubectlget命令kubectlget命令用于获取并列出一个或多个资源的信息。其命令格式如下。kubectlget(-fFILENAME\|TYPE[NAME\|/NAME\|-llabel])[–watch][–sort-by=FIELD][[-o\|–output]=OUTPUT_FORMAT][flags]例如,列出各类资源信息的示例如下。#kubectlgetall //列出所有资源对象#kubectlgetservices //列出所有命名空间中的所有服务#kubectlgetrc,services //列出所有命名空间中的所有Replication和Service信息#kubectlgetpods--all-namespaces //列出所有命名空间中的所有Pod信息任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令6.kubectlget命令例如,列出各类资源信息的示例如下。#kubectlgetpods-owide //列出所有Pod并显示详细信息#kubectlgetdeploymentmy-deployment //列出指定名称的Deployment的信息#kubectlget-ojsonpodweb-pod-13je7 //以JSON格式输出一个Pod信息#kubectlget-fpod.yaml-ojson //输出pod.yaml配置文件中指定资源对象和名称的Pod信息,并以JSON格式进行输出任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令7.kubectldescribe命令kubectldescribe命令用于获取资源的相关信息。其命令格式如下。kubectldescribe(-fFILENAME\|TYPE[NAME_PREFIX\|/NAME\|-llabel])[flags]例如,获取资源相关信息的示例如下。#kubectldescribenodesmy-node //查看节点my-node的详细信息#kubectldescribepodsmy-pod //查看Podmy-pod的详细信息任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令8.kubectllogs命令kubectllogs命令用于查看日志信息。其命令格式如下。kubectllogs[-f][-p](POD|TYPE/NAME)[-cCONTAINER][options]例如,输出日志信息的示例如下。#kubectllogsmy-pod //输出单容器Podmy-pod的日志到标准输出控制台上#kubectllogsnginx-78f5d695bd-czm8z-cnginx//输出多容器Pod中的某个nginx容器的日志任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令8.kubectllogs命令#kubectllogs-lapp=nginx //输出所有包含app-nginx标签的Pod日志#kubectllogs-fmy-pod //加上-f参数表示跟踪日志,类似于tail-f#kubectllogsmy-pod-p //输出该Pod的上一个退出容器的实例日志,在Pod容器异常退出时很有用#kubectllogsmy-pod--since-time=2018-11-01T15:00:00Z //指定时间戳输出日志任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令9.kubectlscale命令kubectlscale命令用于设置副本的数量。其命令格式如下。kubectlscale(-fFILENAME\|TYPENAME\|TYPE/NAME)–replicas=COUNT[–resource-version=version][–current-replicas=count][flags]例如,设置资源副本的示例如下。#kubectlscale--replicas=4rs/foo //将foo中Pod副本的数量设置为4#kubectlscale--replicas=3-ffoo.yaml 任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令9.kubectlscale命令

//将由foo.yaml配置文件中指定的资源对象和名称标识的Pod资源副本数量设置为3#kubectlscale--current-replicas=2--replicas=3deployment/mysql //如果当前副本数为2,则将其扩展至3#kubectlscale--replicas=5rc/foorc/barrc/baz //设置多个RC中Pod副本的数量任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令10.kubectlrolling-update命令

kubectlrolling-update命令用于滚动更新,即在不中断业务的情况下更新Pod。其命令格式如下。kubectlrolling-updateOLD_CONTROLLER_NAME([NEW_CONTROLLER_NAME]–image=NEW_CONTAINER_IMAGE\|-fNEW_CONTROLLER_SPEC)[flags]说明:对于已经部署并且正在运行的业务,rolling-update提供了不中断业务的更新方式。rolling-update每次启动一个新的Pod,等新Pod完全启动后再删除一个旧的Pod,重复此过程,直到替换掉所有旧的Pod。rolling-update需要确保新的Pod有不同的名称、版本和标签,否则会报错。任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令10.kubectlrolling-update命令

#kubectlrolling-updatefrontend-v1frontend-v2--image=image:v2在滚动升级的过程中,如果发生了失败或者配置错误,则可随时执行回滚操作。#kubectlrolling-updatefrontend-v1frontend-v2–rollback任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令11.其他命令

kubectlexec命令类似于Docker的exec命令。kubectlrun命令类似于Docker的run命令。kubectlcp命令用于Pod和外部文件的交换。kubectlcluster-info命令可查看集群信息。kubectlcordon、kubectluncordon、kubectldrain命令可用于节点管理。任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令11.其他命令

例如,kubectl其他命令的使用示例如下。#kubectlexecmy-pod--ls/ //在已存在的容器中执行命令(在只有一个容器的情况下)#kubectlexecmy-pod-cmy-container--ls/ //在已存在的容器中执行命令(在Pod中有多个容器的情况下)#kubectlrun-i--ttybusybox--image=busybox--sh任务6.2Kubernetes的基本操作相关知识6.2Kubernetes常用命令11.其他命令

//以交互式Shell的方式运行Pod#ubectlcp/tmp/foo_dir<some-pod>:/tmp/bar_dir //复制宿主机本地文件夹到Pod中#kubectlcp<some-namespace>/<some-pod>:/tmp/foo/tmp/bar //将Pod中的文件复制到宿主机本地目录中#kubectlcordonmy-node //标记my-node不可调度#kubectldrainmy-node //清空my-node以待维护#kubectluncordonmy-node //标记my-node可调度实训目的(1)掌握Kubernet集群下部署nginx的方法。(2)掌握Kubectl基本命令的使用。6.2任务6.2Kubernetes的基本操作项目实训(在Kubernetes下部署nginx服务)实训步骤1.任务环境准备本任务选用两台部署在VMwareWorkstation16中的虚拟机,虚拟机均已预先安装Redhat8.1运行环境。各虚拟主机基本配置信息表如表6-1所示。表6-1各虚拟主机基本配置信息表6.2任务6.2Kubernetes的基本操作项目实训主机名IP地址虚拟机CPU/内存节点角色k8s-master192.168.100.101/242vcpus/8GB管理节点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论