使用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. ES6深入浅出-4 迭代器与生成器-1.字面量增强

    今天的内容 字面量literal 写出来就是它的值 例如字符串hello.这就是自变量. 一个空对象,也是自变量 写出来就是代表它写出来的那个意思就是自变量. 与其相反的就是构造出来的.例如下面的ne ...

  2. 123457123456#1#----com.tym.DishuGame78--前拼后广--宝宝打地鼠_tym

    com.tym.DishuGame78--前拼后广--宝宝打地鼠_tym

  3. Embedding Layer

    在深度学习实验中经常会遇Eembedding层,然而网络上的介绍可谓是相当含糊.比如 Keras中文文档中对嵌入层 Embedding的介绍除了一句 “嵌入层将正整数(下标)转换为具有固定大小的向量” ...

  4. [ kvm ] 学习笔记 9:WebVirtMgr 基础及安装使用

    目录- 1. 前言- 2. webvirtmgr 简介- 3. webvirtmgr 部署实践    - 3.1 配置 webvirtmgr 主机    - 3.2 kvm node节点配置    - ...

  5. 原生JavaScript常用本地浏览器存储方法三(UserData IE Only)

    UserData的应用范围 serData是微软为IE专门在系统中开辟的一块存储空间,所以说只支持Windows+IE的组合,实际测试在2000(IE5.5).XP(IE6.IE7),Vista(IE ...

  6. 批处理&提权命令

    提权应用 批处理遍历webshell可访问目录 opendir.readdir.is_dir.is_writable这几个遍历文件夹的函数,在php限制的情况下,找可执行目录就没有优势了. @echo ...

  7. 接口请求报错 504 Gateway Time-out

    最近程序接口请求报了一个错误,如图 很明显的请求超时,以前也没出现过这个问题,突然就报了这个错,很懵. 百度之后网上说是nginx的问题,然后突然想起来,因为业务需要我在nginx里配了接口的转发. ...

  8. C# 文档注释规范

    C# 提供一种机制,使程序员可以使用含有 XML 文本的特殊注释语法为他们的代码编写文档.在源代码文件中,具有某种格式的注释可用于指导某个工具根据这些注释和它们后面的源代码元素生成 XML.使用这类语 ...

  9. 【转】mysql 存储过程的示例

    原文地址:https://blog.csdn.net/lishaojun0115/article/details/50183661 begin #定义变量 declare local_sender v ...

  10. 【GStreamer开发】GStreamer基础教程15——继承Clutter

    目标 Clutter是一个开源的库,用来创建快速.可移植和动态的GUI.GStreamer可以通过cluttersink这个element把clutter集成进来,允许视频像纹理一样使用.本教程会展示 ...