kubernetes命令式容器应用编排/部署应用/探查应用详情/部署service对象/扩缩容/修改删除对象
部署Pod应用
创建delpoyment控制器对象
[root@master ~]# kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 --replicas=1
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/myapp created
[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
client 1/1 Running 0 7d18h 10.244.2.3 node2 <none> <none>
myapp-55b9654fbb-psgmb 1/1 Running 0 3s 10.244.1.9 node1 <none> <none>
nginx-deploy-54b5756c7-btwm4 1/1 Running 0 45m 10.244.2.6 node2 <none> <none>
nginx-deploy-54b5756c7-s4fml 1/1 Running 0 45m 10.244.1.6 node1 <none> <none>
创建完成后,它在default名称空间中创建了一个名为myapp的Deploument控制器对象,并且它基于指定的镜像文件创建了一个Pod对象
可以使用kubectl run -h 获取更多用途
打印资源对象的相关信息
[root@master ~]# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
myapp 1/1 1 1 108m
nginx-deploy 2/2 2 2 3h18m
READY 当前已有pod副本数量/期望数量
UP-TO-DATE 更新到最新版本定义的pod对象的副本数量,在控制器的滚动更新模式下,它表示已经完成版本更细你的pod对象的副本数量
AVAILABLE 当前处于可用状态的pod副本的数量
AGE Pod存在的时长
探查pod及应用详情
kubectl describe
kubectl logs
kubectl exec
部署service对象
一个service对象可视作通过标签选择器过滤一组pod对象,并能为此组pod对象监听套接字提供端口代理和调度服务
[root@master ~]# kubectl expose deployment/myapp --type="NodePort" --port=80 --name=myapp-svc
service/myapp-svc exposed
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
myapp-svc NodePort 10.100.110.97 <none> 80:31590/TCP 4s
nginx-svc ClusterIP 10.102.230.186 <none> 80/TCP 161m
[root@master ~]# curl 10.100.110.97
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
expose 暴露
deployment/myapp 根据标签选择一组pod
--type 指定service的类型
++Service创建时,其名称和ClusterIP会由CoreDNS附件动态添加至名称解析库中,因此名称解析服务在对象创建后即可直接使用++
++ClusterIP为service的地址,它是一个虚拟ip,并没有配置在集群中任何主机的任何接口上,但是每个node之上的kube-proxy都会为CluserIP所在的网络创建用于转发的iptables或者ipvs规则,用户可以在集群外部任何浏览器请求集群任一节点的相关端口进行访问测试++
[root@master ~]# kubectl describe service myapp-svc
Name: myapp-svc
Namespace: default
Labels: run=myapp
Annotations: <none>
Selector: run=myapp
Type: NodePort
IP: 10.100.110.97
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 31590/TCP
Endpoints: 10.244.1.9:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
Selector 当前service对象使用的标签选择器,用于选择关联的pod对象
Type service类型,可以是ClusterIP,NodePort,LoadBalancer等之一
Port 暴露端口,当前service用于接受并响应的请求端口
TargetPort 容器中用于暴露的目标端口,由service port请求至此端口
NodePort 当前service的NodePort,它是否存在有效值和Type字段中的类型相关
Endpoints 后端端点,即被当前service的Select选择的所有pod的IP和PORT
Session Affinity 是否启用会话粘性
EXternal Traffic Policy 外部流量的调度策略
扩容和缩容
[root@master ~]# kubectl scale deployment/myapp --replicas=3
deployment.extensions/myapp scaled
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
client 1/1 Running 0 7d21h
myapp-55b9654fbb-87fdz 1/1 Running 0 11s
myapp-55b9654fbb-psgmb 1/1 Running 0 169m
myapp-55b9654fbb-tntp4 1/1 Running 0 11s
nginx-deploy-54b5756c7-btwm4 1/1 Running 0 3h35m
nginx-deploy-54b5756c7-s4fml 1/1 Running 0 3h35m
完成扩容后,查看deployment和service详细信息
[root@master ~]# kubectl describe deployment -l run=myapp
Name: myapp
Namespace: default
CreationTimestamp: Tue, 22 Jan 2019 11:55:25 +0800
Labels: run=myapp
Annotations: deployment.kubernetes.io/revision: 1
Selector: run=myapp
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: run=myapp
Containers:
myapp:
Image: ikubernetes/myapp:v1
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: myapp-55b9654fbb (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 81s deployment-controller Scaled up replica set myapp-55b9654fbb to 3
# 显示已经完成扩容
[root@master ~]# kubectl describe service/myapp-svc
Name: myapp-svc
Namespace: default
Labels: run=myapp
Annotations: <none>
Selector: run=myapp
Type: NodePort
IP: 10.100.110.97
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 31590/TCP
Endpoints: 10.244.1.10:80,10.244.1.9:80,10.244.2.8:80
# 创建的service资源对象后端端点也已经通过标签选择器自动扩展到了这3个pod对象相关的端点
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
修改和删除对象
成功创建在k8s上的对象也成为活动对象,其配置信息由API Service保存于集群状态存储系统etcd中,而运行 kubectl edit 命令可调用默认编辑器对活动对象的可配置对象进行编辑。
有些命令是kubectl edit命令某一部分功能的二次封装 ,例如 kubectl scale 命令不过是专用于修改资源对象的replicas属性值,它也同样作用于活动对象,这样就很容易理解了。
删除受控制器控制的pods
[root@master ~]# kubectl delete deployment myapp
deployment.extensions "myapp" deleted
kubernetes命令式容器应用编排/部署应用/探查应用详情/部署service对象/扩缩容/修改删除对象的更多相关文章
- 从零入门 Serverless | Serverless Kubernetes 应用部署及扩缩容
作者 | 邓青琳(轻零) 阿里云技术专家 导读:本文分为三个部分,首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署,其次介绍 Serverless Kuberne ...
- Airbnb的动态kubernetes集群扩缩容
Airbnb的动态kubernetes集群扩缩容 本文介绍了Airbnb的集群扩缩容的演化历史,以及当前是如何通过Cluster Autoscaler 实现自定义扩展器的.最重要的经验就是Airbnb ...
- Kubernetes 监控:Prometheus Adpater =》自定义指标扩缩容
使用 Kubernetes 进行容器编排的主要优点之一是,它可以非常轻松地对我们的应用程序进行水平扩展.Pod 水平自动缩放(HPA)可以根据 CPU 和内存使用量来扩展应用,前面讲解的 HPA 章节 ...
- kubernetes实现用户自定义扩缩容
本文章主要参考walkthrough,aggregation和auth.涉及custom metric API的注册认证以及API server aggregation的相关知识.walkthroug ...
- 从K8S部署示例进一步理解容器化编排技术的强大
概念 Kubernetes,也称为K8s,生产级别的容器编排系统,是一个用于自动化部署.扩展和管理容器化应用程序的开源系统.K8s是一个go语言开发,docker也是go语言开发,可见go语言的是未来 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- [5.19 线下活动]Docker Meetup杭州站—拥抱Kubernetes,容器深度实践
对本次线下活动感兴趣的朋友,欢迎点击此处报名,领取免费票. 今年3月,Docker刚刚过完5岁生日,五年期间,Docker也逐渐在技术和实践方面趋于成熟,更是在去年年底主动拥抱Kubernetes. ...
- Docker(三):利用Kubernetes实现容器的弹性伸缩
一.前言 前两章有的介绍docker与Kubernetes.docker是项目运行的容器,Kubernetes则是随着微服务架构的演变docker容器增多而进行其编排的重要工具.Kubernetes不 ...
- docker微服务部署之:七、Rancher进行微服务扩容和缩容
docker微服务部署之:六.Rancher管理部署微服务 Rancher有两个特色用起来很方便,那就是扩容和缩容. 一.扩容前的准备工作 为了能直观的查看效果,需要修改下demo_article项目 ...
随机推荐
- C# 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
C# 在调用C++dll时,可能会出现 :试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B)这个错误. 一般情况下是C#目标平台跟C++dll不兼容,64位跟32位兼容性问 ...
- redis下的adlist
//adlist.h #ifndef __ADLIST__H__ #define __ADLIST__H__ typedef struct listNode_ { struct listNode_ * ...
- 枚举类型与位域枚举Enum
一.概述 定义一个值类型,其中包含固定值集合.枚举类型变量可以是此集合中的任意一个或多个值.枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...
- 结构类型:Struct
一.概述: 结构类似于类,但结构为值类型,存储于栈中. 结构不能继承和被继承,但可实现接口. 结构成员访问级别有public,private(默认) ,internal. 1.简单结构 可以将无方法, ...
- ubuntu 14.04 配置 java 环境
下载java包 (这里以java8为例) java包的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloa ...
- U-Mail邮件营销可视化编辑设计邮件模板so easy
相信每位看过军事演习的朋友都知道,现代战争越来越就像一场沙盘演练,真正做到了“运筹帷幄之中决战千里之外”,后方坐镇指挥战斗的能够将前线战场变得透明,这就叫“可视化战争”,做到了<孙子兵法> ...
- ES6重点--笔记(转)
最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...
- [19/04/27-星期六] GOF23_结构型模式(装饰模式、外观模式)
一.装饰模式(decorator) 职责:动态的为一个对象增加新的功能. 是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能.使用对象的关联关系代替继承关系,更加灵活,避免类体系的膨胀 ...
- 1、Android-活动(上)
1.1.活动是什么 活动(Activity)是最容易吸引用户的地方,他是一种可以包含用户界面的组件 主要用于和用户进行交互 一个用户可以包含零个或多个活动,不包含活动的程序少见 1.2.活动的基本用法 ...
- wireMock快速伪造restful服务
官网地址:http://wiremock.org/ Jar下载:http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock/1.57/w ...