java系统找不到指定文件怎么解决
254
2022-09-08
K8s命令式容器应用编排基础管理操作Deployment控制器
K8S集群资源分类:名称空间级别、集群级别和元数据型。
名称空间级别:
工作负载型资源(workload):Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob(ReplicationController在v1.11版本被废弃)服务发现及负载均衡型资源(ServiceDiscovery LoadBalance):Service、Ingress …配置与存储型资源:Volume(存储卷)、CSI(容器存储接口)特殊类型的存储卷:ConfigMap(当配置中心来使用的资源类型)、Secret(保存敏感数据)、DownwardAPI(把外部环境中的信息输出给容器)
集群级资源:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding 元数据型资源:HPA、PodTemplate、LimitRange
一般来说,Kubernetes之上应用程序的基础管理操作由如下几个部分组成:
通过合用的Controller类的资源(如Deployment或ReplicationController)创建并管控Pod对象以运行特定的应用程序,如Nginx或tomcat等。无状态(stateless)应用的部署和控制通常使用Deployment控制器进行,而有状态应用则需要使用statefulSet控制器。为Pod对象创建Service对象,以便向客户端提供固定的访问路径,并借助于CoreDNS进行服务发现。随时按需获取各资源对象的简要或详细信息,以了解其运行状态。如有需要,则手动对支持扩缩容的Controller组件进行扩容或缩容;或者,为支持HPA的Controller组件(如Deployment或ReplicationController)创建HPA资源对象以实现Pod副本数目的自动伸缩。滚动更新:当应用程序的镜像出现新版本时,对其执行更新操作;必要时,为Pod对象中的容器更新其镜像版本;并可根据需要执行回滚操作。
创建Deployment控制器对象
kubectl run命令可用于命令行直接创建Deployment控制器,并以–image选项指定的镜像运行Pod中的容器,–dry-run选项可用于命令的测试运行,但并未真正执行资源对象的创建过程。例如,下面命令要创建一个名为myapp的Deployment控制器对象,它使用镜像ikubernetes/myapp:v1创建Pod对象,但仅在测试运行后即退出:kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 --replicas=1 --dry-run 镜像ikubernetes/myapp:v1中定义的容器主进程默认监听于80端口的Web服务程序Nginx,因此,如下命令使用–port=80来指明容器要暴露的端口。而–replicas=1选项则指定了目标控制器对象要自动创建的pod对象的副本数量:kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 --replicas=1 deployment.apps/myapp created, 其在default名称空间中创建了一个名为myapp的Deployment控制器对象,并由它基于指定的镜像文件创建了一个Pod对象。 kubectl run命令其他常用的选项还有如下几个,它们支持用户在创建资源对象时实现更多的控制,具体如下。 -l, --labels:为Pod对象设定自定义标签。 –record:是否将当前的对象创建命令保存至对象的Annotation中,布尔型数据,其值可为true或false。 –save-config:是否将当前对象的配置信息保存至Annotation中,布尔型数据,其值可为true或false。 –restart=Never:创建不受控制器管控的自主式Pod对象。
打印资源对象的相关信息
kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmyapp 1 1 1 1 1m
上面命令的执行结果中,各字段的说明具体如下
NAME: 资源对象的名称DESIRED:用户期望由当前控制器管理的pod对象副本的精确数量CURRENT:当前控制器已有的pod对象的副本数量UP-TO-DATE:更新到最新版本定义的pod对象的副本数量,在控制器的滚动更新模式下,它表示已经完成版本更新的Pod对象的副本数量AVAILABLE:当前处于可用状态的Pod对象的副本数量,即可正常提供服务的副本数AGE:Pod的存在时长
Deployment资源对象通过ReplicaSet控制器实例完成对Pod对象的控制,而非直接控制。另外,通过控制器创建的Pod对象都会被自动附加一个标签,其格式为"run=
kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODEmyapp-6865459dff-5nsjc 1/1 Running 0 3m 10.244.3.2 node03.ilinux.io
上面命令的执行结果中,每个字段均代表Pod资源对象一个方面的属性。
探查Pod及应用详情
kubectl describe:显示资源的详情,包括运行状态、事件等信息,但不同的资源类型其输出内容不尽相同 kubectl logs:查看Pod对象中容器输出在控制台的日志信息。在Pod中运行有多个容器时,需要使用选项-c指定容器名称 kubectl exec:在Pod对象某容器内运行指定的程序,其功能类似于docker exec命令,可用于了解容器各方面的相关信息或执行必需的设定操作等,其具体功能取决于容器内可用的程序
运行着非交互式进程的容器中,默认运行的唯一进程及子进程启动后,容器进入独立、隔离的运行状态。对容器内各种详情的了解需要穿透容器边界进入其中运行其他的应用程序来进行,“kubectl exec”可以让用户在pod的某容器中运行用户所需要的任何存在于容器中的程序。例如:kubectl exec $POD_NAME ps aux (-c 指定pod内运行的容器名) 若要进入容器的交互式Shell接口,可使用如下命令:kubectl -it exec $POD_NAME /bin/sh
部署Service对象
Service对象可视作通过其标签选择器过滤出的一组Pod对象,并能够为此组Pod对象监听的套接字提供端口代理及调度服务。
创建Service对象
kubectl expose命令可用于创建Service对象以将应用程序暴露于网络中。例如,下面的命令即可将myapp创建的pod对象使用NodePort类型的服务暴露到集群外部:kubectl expose deployments/myapp --type="NodePort" --port=80 --name=myapp。 通过myapp Client Pod对象访问:kubectl run client --image=busybox --restart=Never -it – /bin/sh wget -O - -q 创建时,service对象名称及其ClusterIP会由coreDNS附件动态添加至名称解析库当中,因此,名称解析服务在对象创建后即可直接使用。
创建Service对象的另一种方式是kubectl create service命令 ,对应于每个类型,它分别有一个专用的子命令,例如kubectl create service clusterip和kubectl create service nodeport等。
查看Service资源对象的描述
kubectl get services命令能够列出Service对象的相关信息 kubectl describe services 打印Service对象的详细信息 kubectl get svc/myapp 显示Service对象myapp简要状态信息
扩容和缩容
伸缩就是指改变特定控制器上Pod副本数量的操作。Service对象内建的负载均衡机制可在其后端副本数量不止一个时自动进行流量分发,它还会自动监控关联到的Pod的健康状态,以确保仅将请求流量分发至可用的后端POD对象。若某Deployment控制器管理包含多个Pod实例,则必要时用户还可以为其使用滚动更新机制将其容器镜像升级到新的版本或变更那些支持动态修改的pod属性。 使用kubectl run命令创建Deployment对象时,–replicas选项能够制定由该对象创建或管理的Pod对象副本的数量,且其数量支持运行时进行修改,并立即生效。kubectl scale命令就是专用于变动控制器应用规模的命令,它支持对Deployment资源对象的扩容和缩容操作。 将myapp的Pod副本数量扩展为3个:kubectl scale deployments/myapp --replicas=3
修改及删除对象
成功创建于K8S之上的对象也称为活动对象live object,其配置信息live object configuration由API Server保存于集群状态存储系统etcd中,kubectl get TYPE NAME -o yaml命令可获取到相关的完整信息,而运行kubectl edit命令可调用默认编辑器对活动对象的可配置属性进行编辑。例如,修改此前创建的Service对象myapp的类型为ClusterIP,使用kubectl edit service myapp命令打开编辑界面后修改type属性的值为ClusterIP,并删除NodePort属性,然后保存。对活动对象的修改将实时生效,但资源对象的有些属性并不支持运行时修改,此情况下,编辑器将不允许保存退出。
删除Service对象 kubectl delete service myapp 删除默认名称空间所有Deployment控制器 kubectl delete deployment --all
名称空间
https://jianshu.com/p/716d26cdf3f3
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~