部署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对象/扩缩容/修改删除对象的更多相关文章

  1. 从零入门 Serverless | Serverless Kubernetes 应用部署及扩缩容

    作者 | 邓青琳(轻零) 阿里云技术专家 导读:本文分为三个部分,首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署,其次介绍 Serverless Kuberne ...

  2. Airbnb的动态kubernetes集群扩缩容

    Airbnb的动态kubernetes集群扩缩容 本文介绍了Airbnb的集群扩缩容的演化历史,以及当前是如何通过Cluster Autoscaler 实现自定义扩展器的.最重要的经验就是Airbnb ...

  3. Kubernetes 监控:Prometheus Adpater =》自定义指标扩缩容

    使用 Kubernetes 进行容器编排的主要优点之一是,它可以非常轻松地对我们的应用程序进行水平扩展.Pod 水平自动缩放(HPA)可以根据 CPU 和内存使用量来扩展应用,前面讲解的 HPA 章节 ...

  4. kubernetes实现用户自定义扩缩容

    本文章主要参考walkthrough,aggregation和auth.涉及custom metric API的注册认证以及API server aggregation的相关知识.walkthroug ...

  5. 从K8S部署示例进一步理解容器化编排技术的强大

    概念 Kubernetes,也称为K8s,生产级别的容器编排系统,是一个用于自动化部署.扩展和管理容器化应用程序的开源系统.K8s是一个go语言开发,docker也是go语言开发,可见go语言的是未来 ...

  6. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  7. [5.19 线下活动]Docker Meetup杭州站—拥抱Kubernetes,容器深度实践

    对本次线下活动感兴趣的朋友,欢迎点击此处报名,领取免费票. 今年3月,Docker刚刚过完5岁生日,五年期间,Docker也逐渐在技术和实践方面趋于成熟,更是在去年年底主动拥抱Kubernetes. ...

  8. Docker(三):利用Kubernetes实现容器的弹性伸缩

    一.前言 前两章有的介绍docker与Kubernetes.docker是项目运行的容器,Kubernetes则是随着微服务架构的演变docker容器增多而进行其编排的重要工具.Kubernetes不 ...

  9. docker微服务部署之:七、Rancher进行微服务扩容和缩容

    docker微服务部署之:六.Rancher管理部署微服务 Rancher有两个特色用起来很方便,那就是扩容和缩容. 一.扩容前的准备工作 为了能直观的查看效果,需要修改下demo_article项目 ...

随机推荐

  1. [翻译] PQFCustomLoaders

    PQFCustomLoaders Current version: 0.0.1 Collection of highly customizable loaders for your iOS proje ...

  2. [tools]excel转lua的python实现

    time:2015/04/13 描述:需要将excel表格内容转成lua,并且作为工具使用,能够批量转换 步骤: (1)文章[1]已经做了大部分的内容,而且也已经能够使用了 (2)根据自己新的需求: ...

  3. php中的html元素

    我们先看下面的代码 form2.php <html> <head><title>greetins eartyling</title></head& ...

  4. [DBSDFZOJ 多校联训] Password

    Password password.in/.out 描述 你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s. 传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s ...

  5. web安全职位面试题目汇总

    Domain 解释一下同源策略 同源策略,那些东西是同源可以获取到的 如果子域名和顶级域名不同源,在哪里可以设置叫他们同源 如何设置可以跨域请求数据?jsonp是做什么的? Ajax Ajax是否遵循 ...

  6. [DP]洛谷P1115最大子段和

    题目来源 https://www.luogu.org/problemnew/show/P1115 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一 ...

  7. 软工团队 - 预则立&&他山之石

    软工团队 - 预则立&&他山之石 团队任务计划 时间 人员 任务 10.23-10.29 张昭锡 初拟Android代码规范 李永盛 初拟PHP代码规范 刘晨瑶 初拟Git代码规范 刘 ...

  8. 020.2.3 math类

    内容:一个数的最小整数,平方,随机数其他数学上常用的,去API里面找些对象试一下,在Java.lang包里面 Math.ceil()返回一个大于这个小数的最小整数,比如12.56156,返回13 Ma ...

  9. IOS 缓存思路

    为了提高程序的响应速度,可以考虑使用缓存(内存缓存\硬盘缓存) 第一次请求数据时内存缓存中没有数据硬盘缓存中没有数据 当服务器返回数据时,需要做以下步骤 使用服务器的数据(比如解析.显示) 将服务器的 ...

  10. Maven构建项目报No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题的解决方案

    在编译SSM项目时,碰到如下问题,希望能给遇到相同问题的小伙伴们帮助 O(∩_∩)O~ Eclipse导入Maven项目后,选中父项目,执行Run AS——>Maven install后,出现如 ...