使用kubectl进行增、删、查、改等常用操作

查看kubectl命令帮助

  • kubectl -h
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
Basic Commands (Beginner):    #基本命令集,适合新手create         Create a resource from a file or from stdin.expose         使用 replication controller, service, deployment 或者 pod 并暴露它作为一个 新的
Kubernetes Servicerun            在集群中运行一个指定的镜像set            为 objects 设置一个指定的特征run-container  在集群中运行一个指定的镜像. This command is deprecated, use "run" insteadBasic Commands (Intermediate):  #基本命令集,适合有一定基础的人get            显示一个或更多 resourcesexplain        查看资源的文档edit           在服务器上编辑一个资源delete         Delete resources by filenames, stdin, resources and names, or by resources and label selectorDeploy Commands:   #发布相关的命令集rollout        Manage the rollout of a resourcerolling-update 完成指定的 ReplicationController 的滚动升级scale          为 Deployment, ReplicaSet, Replication Controller 或者 Job 设置一个新的副本数量autoscale      自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量Cluster Management Commands: #集群管理相关的命令集certificate    修改 certificate 资源.cluster-info   显示集群信息top            Display Resource (CPU/Memory/Storage) usage.cordon         标记 node 为 unschedulableuncordon       标记 node 为 schedulabledrain          Drain node in preparation for maintenancetaint          更新一个或者多个 node 上的 taintsTroubleshooting and Debugging Commands:  #故障检测及调试相关命令集describe       显示一个指定 resource 或者 group 的 resources 详情logs           输出容器在 pod 中的日志attach         Attach 到一个运行中的 containerexec           在一个 container 中执行一个命令port-forward   Forward one or more local ports to a podproxy          运行一个 proxy 到 Kubernetes API servercp             复制 files 和 directories 到 containers 和从容器中复制 files 和 directories.auth           Inspect authorizationAdvanced Commands: #高级命令集apply          通过文件名或标准输入流(stdin)对资源进行配置patch          使用 strategic merge patch 更新一个资源的 field(s)replace        通过 filename 或者 stdin替换一个资源convert        在不同的 API versions 转换配置文件Settings Commands:  #设置相关的命令集label          更新在这个资源上的 labelsannotate       更新一个资源的注解completion     Output shell completion code for the specified shell (bash or zsh)Other Commands: #其他命令集api-versions   Print the supported API versions on the server, in the form of "group/version"config         修改 kubeconfig 文件help           Help about any commandplugin         Runs a command-line pluginversion        输出 client 和 server 的版本信息Usage:    #使用格式kubectl [flags] [options]Use "kubectl <command> --help" for more information about a given command.  #各个子命令如何获取命令帮助
Use "kubectl options" for a list of global command-line options (applies to all commands).  #查看命令的通用选项(所有命令)

可以看到,命令帮助很人性化的帮我们对各个命令做了划分,让我们可以更好的学习和使用,下面我们开始使用kubectl命令在命令行下测试相关命令的用法

创建一个应用程序

1 创建一个应用程序,我们使用  "kubectl run " 命令,是 "kubectl run -h" 查看命令使用帮助,命令说明告诉我们这个命令可以创建一个deployment或者job的容器

kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1

2 查看一下deployment的信息,是否有当前创建的

kubectl get deployment

NAME(名称) DESIRED(需要pod的个数) CURRENT(当前已经存在的个数) UP-TO-DATE(最新创建的pod个数)  AVAILABLE(可用的pod个数)   AGE(deployment存活的时间)

3 获取pod的信息,-o wide 表示更详细的显示信息

访问创建的 pod (nginx-deploy)

1 集群内访问

curl 10.32.0.4

2 集群外部访问

当我们在集群之外访问是发现无法访问,那么集群之外的客户端如何才能访问呢?这就需要我们的service服务了,下面我们就创建一个service,是外部客户端可以访问我们的pod

创建一个service

使用kubectl expose 可以创建一个service ,可以使用 kubectl expose -h命令查看命令帮助

kubectl expose deployment nginx-deploy  --name=nginx   --port=80 --target-port=80 --type=NodePort

查看我们service的详细信息

kubectl get svc -o wide

使用集群外客户端再一次访问,需要使用集群任意节点的IP地址加上暴露的端口号

 

  

service服务有个特点,如果端口暴露类型为NodePort,那么可以通过集群内任意一台主机加暴露的端口进行访问

对nginx-deploy这个deployment进行扩容和缩减操作

查看 deployment 信息

kubectl get deployment

扩容: 对名称为nginx-deploy类型为deployment的对象进行扩容,有初始的1个扩容到五个

kubectl scale --replicas=5 deployment nginx-deploy

查看 pod 扩容的过程

kubectl get pod -w

缩减:

使用replicas指定我们想要的个数即可
kubectl scale --replicas=3 deployment nginx-deploy

  

现在我们对 nginx-deploy进行滚动升级及回滚操作,由1.14-alpine 升级到1.15-alpine,并由1.15-alpine回滚到1.14-alpine版本(nginx在docker hub上版本信息:https://hub.docker.com/_/nginx/)  

  

滚动升级:

kubectl set image deployment nginx-deploy nginx-deploy=nginx:1.15-alpine --record

观察滚动升级的过程

查看任意一个pod的信息,看看镜像是否升级

版本回滚:

--to-revision 参数可以指定回退的版本

查看任意一个pod的信息,看看镜像是否回滚到1.14-alpine版本

服务发现

先创建一个新应用,叫myapp:

kubectl run myapp --image=ikubernetes/myapp:v1 --replicas=2

运行一个客户端Pod,在客户端Pod内部通过service的名称去访问nginx服务

kubectl run client -it --image=busybox --replicas=1 --restart=Never

在busybox上测试访问  

wget -O - -q 10.32.0.5
wget -O - -q 10.32.0.8

为myapp创建一个service

kubectl expose deployment myapp --name=myapp --port=80
kubectl get svc

 通过在busyboy上面访问 myapp service 时随机分发到不同的pod 

对此也可以尝试对 myapp(deployment) 做一些滚动升级,删除修改通过在集群内部通过服务ip会自动的发现 myapp pod

如果想通过一个固定地址去访问这个myapp,可以利用nginx做反向代理

这一篇笔记只是演示如何通过手动去创建、更新、回滚一个应用。这只是在使用K8S中,最简单但是无法实现其全部功能 、全部定制的一种使用方式。而在真正使用K8S时,基本不会这样去操作。我们使用K8s的常用方式,应该是基于YAML格式的配置文件来定义和创建资源

操作的命令做一个大致的总结

  • kubectl run  创建一个deployment或job来管理创建的容器
  • kubectl get  显示一个或多个资源,可以使用标签过滤,默认查看当前名称空间的资源
  • kubectl expose 将一个资源暴露为一个新的kubernetes的service资源,资源包括pod (po), service (svc), replicationcontroller (rc),deployment(deploy), replicaset (rs)
  • kubectl describe 显示特定资源或资源组的详细信息
  • kubectl scale 可以对Deployment, ReplicaSet, Replication Controller, 或者StatefulSet设置新的值,可以指定一个或多个先决条件 kubectl set #更改现有的应用程序资源
  • kubectl rollout  资源回滚管理

转载于:https://www.cnblogs.com/crazymagic/p/10995354.html

kubernetes 应用快速入门相关推荐

  1. 3、kubernetes应用快速入门190625

    一.kubernetes应用入门 1.kubectl命令 Basic Commands create Create a resource from a file or from stdin.expos ...

  2. Kubernetes(k8s)快速入门和环境部署

    目录 1. Kubernetes介绍 1.1 应用部署方式演变 1.2 kubernetes简介 1.3 kubernetes组件 1.4 kubernetes概念 2. kubernetes集群环境 ...

  3. 【阿里云-容器】阿里云容器服务Kubernetes版快速入门

    一.部署并公开 本步骤指导您如何在ACK集群中快速部署一个无状态应用(Deployment),即魔方游戏,并将该应用向公网公开.关于创建Deployment的详细参数描述,请参见创建无状态工作负载De ...

  4. 云原生第3课:Kubernetes 系统快速入门

    本篇文章来自<华为云云原生王者之路训练营>黄金系列课程第3课,由华为云容器批量计算首席架构师马达主讲,介绍云原生技术体系中Kubernetes的相关概念和技术架构. 01 Kubernet ...

  5. Kubernetes CKA认证运维工程师笔记-Docker快速入门

    Kubernetes CKA认证运维工程师笔记-Docker快速入门 1. Docker 概念与安装 1.1 Docker 是什么 1.2 Docker 基本组成 1.3 版本与支持平台 1.4 Do ...

  6. kubernetes 菜鸟_菜鸟系列k8s——k8s快速入门(1)

    k8s快速入门 1.快速创建k8s集群 点击教程菜单 1. Create a Cluster -> Interactive Tutorial - Creating a Cluster note: ...

  7. 《Kubernetes零基础快速入门》简介

    容器技术快速入门书<Kubernetes零基础快速入门>,京东当当天猫都有发售.定价59元,打折一下更合适. Kubernetes为容器化的应用提供了资源调度.部署.运行.服务发现.扩容和 ...

  8. 深入浅出Istio:Service mesh快速入门与实践-读书笔记(By GisonWin)

    01 服务网格历史 (以后补充) 02 服务网格的基本特性 连接 微服务错综复杂,要完成其业务目标,连接问题是首要问题.连接存在于所有服务的整个lifcecycle中,用于维持服务的运行. 安全 保障 ...

  9. 容器编排技术 -- AWS EC2快速入门

    容器编排技术 -- AWS EC2快速入门 前提条件 1.您需要一个AWS账户,访问http://aws.amazon.com获得. 2.安装并配置AWS命令行界面. 3.你需要一个拥有EC2全部权限 ...

最新文章

  1. 不要签字!不要签字!不要签字!最近违法裁员猖獗,这里单独给大家一些应对参考!...
  2. 系统计算机大小怎么更改,调整设置电脑图标大小的方法
  3. android检查usb广播,Android 检测USB 音频设备
  4. 程序员需要牢记的一点
  5. static 静态成员变量和静态函数 C++
  6. ASP.NET Core IHostEnvironment和IApplicationLifetime介绍
  7. resultMap1_自定义结果映射规则
  8. Spring Security with Spring Boot 2.0:密码编码器
  9. Hakase and Nano 博弈
  10. 报错Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.liuyanzhao.b
  11. [2018.03.13 T1] 比赛(contest)
  12. Docker资源配置方法(Cgroup)
  13. ios 按钮下面加下划线_iOS 给部分文字加下划线四种方法
  14. 外卖行业现状分析_2020年中国外卖行业市场现状和发展趋势分析 外卖下沉趋势明显「组图」...
  15. axios请求跨域前端解决_10、axios请求以及跨域问题,前端解决方法。11、后端-nginx解决方法...
  16. 亲自体验跑跑卡丁车2010年魔改单机版(附安装包)
  17. 企业邮箱管理员如何管理邮箱
  18. java sci论文,SCI论文中那些容易被混淆的部分!你写错过吗?
  19. 爱普生Epson Expression Home XP-200 驱动
  20. 苹果手机解压缩软件_Bandizip:一款清爽快捷的压缩与解压缩软件

热门文章

  1. 网络编程之 信号捕捉器(函数指针与回调函数)
  2. python 写xml_使用python 写xml文件
  3. 查看mysql创建 数据库_Mysql创建数据库和查看数据库
  4. bootstrap列高度_如何使Bootstrap列都具有相同的高度?
  5. mysql拼接数组_Mysql合并结果接横向拼接字段的实现步骤
  6. 掌握 git reset 使用
  7. 你了解node多进程吗
  8. 快速了解babel工作原理
  9. 机箱一直反复开机熄火_小身材大容量,老炮九州风神魔方110机箱+DQ 650ST+玄冰400双刃装机体验...
  10. 循环机换变速箱油教程_问答| 想更换变速箱油,是重力换还是循环换?