使用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 Service
run 在集群中运行一个指定的镜像
set 为 objects 设置一个指定的特征
run-container 在集群中运行一个指定的镜像. This command is deprecated, use "run" instead Basic Commands (Intermediate): #基本命令集,适合有一定基础的人
get 显示一个或更多 resources
explain 查看资源的文档
edit 在服务器上编辑一个资源
delete Delete resources by filenames, stdin, resources and names, or by resources and label selector Deploy Commands: #发布相关的命令集
rollout Manage the rollout of a resource
rolling-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 为 unschedulable
uncordon 标记 node 为 schedulable
drain Drain node in preparation for maintenance
taint 更新一个或者多个 node 上的 taints Troubleshooting and Debugging Commands: #故障检测及调试相关命令集
describe 显示一个指定 resource 或者 group 的 resources 详情
logs 输出容器在 pod 中的日志
attach Attach 到一个运行中的 container
exec 在一个 container 中执行一个命令
port-forward Forward one or more local ports to a pod
proxy 运行一个 proxy 到 Kubernetes API server
cp 复制 files 和 directories 到 containers 和从容器中复制 files 和 directories.
auth Inspect authorization Advanced Commands: #高级命令集
apply 通过文件名或标准输入流(stdin)对资源进行配置
patch 使用 strategic merge patch 更新一个资源的 field(s)
replace 通过 filename 或者 stdin替换一个资源
convert 在不同的 API versions 转换配置文件 Settings Commands: #设置相关的命令集
label 更新在这个资源上的 labels
annotate 更新一个资源的注解
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 command
plugin Runs a command-line plugin
version 输出 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  资源回滚管理

kubernetes 应用快速入门的更多相关文章

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

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

  2. 超长干货丨Kubernetes网络快速入门完全指南

    Kubernetes网络一直是一个非常复杂的主题.本文将介绍Kubernetes实际如何创建网络以及如何为Kubernetes集群设置网络. 本文不包括如何设置Kubernetes集群.这篇文章中的所 ...

  3. Kubernetes 学习4 kubernetes应用快速入门

    一.相关命令 1.kubectl 通过连接api server 进行各k8s对象资源的增删改查,如pod,service,controller(控制器),我们常用的pod控制器replicaset,d ...

  4. Kubernetes快速入门

    二.Kubernetes快速入门 (1)Kubernetes集群的部署方法及部署要点 (2)部署Kubernetes分布式集群 (3)kubectl使用基础 1.简介 kubectl就是API ser ...

  5. 5分钟带你快速入门和了解 OAM Kubernetes

    什么是 OAM? OAM 的全称为开放应用模型(Open Application Model),由阿里巴巴宣布联合微软共同推出. OAM 解决了什么问题? OAM 本质是为了解耦K8S中现存的形形色色 ...

  6. spring boot入门教程——Spring Boot快速入门指南

    Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运 ...

  7. Golang快速入门

    Go语言简介: Golang 简称 Go,是一个开源的编程语言,Go是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian L ...

  8. istio部署-快速入门

    参考 istio/istio Quick Start Evaluation Install fleeto/sleep fleeto/flaskapp 本文为 istio 快速入门部署,一般用于演示环境 ...

  9. Golang Module快速入门

    前言: 在Golang1.11之前的版本中,官方没有提供依赖和包管理工具.开发者通常会使用vendor或者glide的方式来管理依赖(也有直接使用GOPATH多环境方式),而在Golang1.11之后 ...

随机推荐

  1. Qt编写气体安全管理系统2-界面框架

    一.前言 整体框架包括两个部分,一部分是UI界面框架,比如一级二级导航菜单按钮整体布局等,一部分是项目框架,上一篇文章说的是项目框架,这一篇文章来说界面框架,Qt做界面非常快速和高效,尤其是提供了可视 ...

  2. Qt编写气体安全管理系统1-项目框架

    一.前言 说到项目框架,也叫代码框架,其实是非常重要的,随着编程经验的增加,相信每个程序员都会有一个自己的习惯的项目框架,这个东西跟建房子一样,先把架子搭好,然后挨个往里边填充内容,据说牛逼的架构师都 ...

  3. 123457123456#2#----com.MCgame.ShuXueKoSuan98--前拼后广--儿童小学数学口算Game-mc22222

    com.MCgame.ShuXueKoSuan98--前拼后广--儿童小学数学口算Game-mc

  4. VS2010配置OpenGL开发环境(转)

    OpenGL(Open Graphics Library)是一个跨编程语言.跨平台的专业图形程序接口.OpenGL是SGI公司开发的一套计算机图形处理系统,是图形硬件的软件接口,任何一个OpenGL应 ...

  5. yii webservice 提示:Procedure 'getSent' not present 错误的解决方法(转)

    其实根据常用的webservice清除缓存方法,在client端加入这样一句话: ini_set("soap.wsdl_cache_enabled", "0") ...

  6. attribute__关键字举例之visibility

    /** @file visibilityT.c * @note * @brief * @author * @date 2019-6-20 * @note v1.0.0 Created * @histo ...

  7. curl实现put请求

    <?php function curlrequest($url,$data,$method='post'){ $ch = curl_init(); //初始化CURL句柄 curl_setopt ...

  8. Java基础教程:Java内存区域

    Java基础教程:Java内存区域 运行时数据区域 Java虚拟机在执行Java程序的过程种会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟 ...

  9. web端自动化——Selenium Server环境配置

    Selenium Server环境配置 下面下载.配置并运行Selenium Server. ①    下载 Selenium Server. 下载地址为:https://pypi.python.or ...

  10. Xpath定位和CSS定位(***重)

    1.XPath是一种在XML文档中定位元素的语言.因为HTML可以看作XML的一种实现, 所以Selenium用户可以使用这种强大的语言在Web应用中定位元素. 1.1 绝对路径定位 参考baidu. ...