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项目 ...
随机推荐
- Exchange 2016 CU6 安装后,发生错误 出现意外错误,无法处理您的请求
公司的Exchange2016环境准备上线了,今天owa打不开了.出现如下图的错误,更多详细信息没有截图,但最关键的一句记下来了. X-OWA-Error Microsoft.Exchange.Dia ...
- ASP.NET Core 2.1以上 Bootstrap 4前端模板文件,开发环境与发布环境前端模板 environment的使用
笔者的前端文件如下 笔者增加Bootstrap 4 和 FontAwersome(字体图标),因为Bootsrap 4已经不再包含图标了. ASp.Net Core 中,通常在 _Layout.csh ...
- Nginx配置文件nginx.conf详细说明文档
在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集于网络. user www-data; #运行用户 worker_pro ...
- project euler 169
project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...
- Fiori Fundamentals和SAP UI5 Web Components
这周有位同事邀请我给团队讲一讲SAP技术的演进历史,所以我准备了下面几个主题来介绍. 其中SAP的技术回顾和演进,我的思路就是从前后台两方面分别介绍. 我画了一张非常简单的图: 去年5月我写过一篇文章 ...
- 初探BeEF
1.什么是BeEF? 就是 The Browser Exploitation Framework 的缩写,意在通过一些手段,控制对方的浏览器. 里面集成了很多模块,能够获取很多东西,有cookie,浏 ...
- Html5 移动应用软件开发框架 JqueryMobile SenchaTouch 介绍
一.JqueryMobile 介绍 jQuery Mobile 是 jQuery 在手机上和平板设备上的版本. jQuery Mobile 不仅会给主流移动平台带来 jQuery 核心库,而且会发布一 ...
- webview综述
nWebView 是webkit最核心的一个view,WebView管理WebFrameView和WebFrame之间的交互,一个WebView对象绑定一个window,并且要求MainFrame加载 ...
- WebUploader 图片上传控件使用范例
官网 http://fex.baidu.com/webuploader/getting-started.html 其实官网写的挺详细的,看官网也可以了. 引入资源 使用Web Uploader文件上 ...
- gluoncv 下载预训练模型速度太慢
export MXNET_GLUON_REPO=https://apache-mxnet.s3.cn-north-1.amazonaws.com.cn https://discuss.gluon.ai ...