使用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. Laya发布微信小游戏项目

    版本2.1.1.1 创建项目时,勾选微信/百度小游戏bin目录快速调试 发布项目时,选择发布平台为微信小游戏 用微信开发者工具打开release/wxgame,这就是微信小游戏项目了,很方便

  2. Python - Django - ORM 不常用字段

    BigAutoField(AutoField): bigint 自增列,必须填入参数 primary_key=True 如果没有写自增列,则会自动创建一个列名为 id 的列 SmallIntegerF ...

  3. CentOS "libc.so.6: version 'GLIBC_2.14' not found"解决方法,同理'GLIBC_2.15' not found"

    出现"libc.so.6: version 'GLIBC_2.14' not found"问题,是由于glibc版本过低,升级glibc即可. 由于CentOS系统RPM源目前gl ...

  4. (一)eclipse Dynamic web project 工程目录以及文件路径问题

    如图,我创建了一个work 的web project,当工程完成之后,部署在服务器上时,整个work工程会被打包成一个war包,如 除了可以在eclipse上运行,工具会帮我们自动部署在服务器上之外, ...

  5. C语言中结构体的构造函数

    示例代码: #include <iostream> using namespace std; struct Node { int x, y, z; Node(int _x, int _y, ...

  6. C#中 IEnumerable, ICollection, IList, List的使用

    List是類,實現了IList接口,IList繼承了ICollection,ICollection繼承了IEnumerable,IEnumerable是其中最底層的接口. 實現IEnumerable接 ...

  7. Xmanager教程

    简介 Xmanager是市场上领先的PC X服务器,可将X应用程序的强大功能带入Windows环境. 提供了强大的会话管理控制台,易于使用的X应用程序启动器,X服务器配置文件管理工具,SSH模块和高性 ...

  8. Django中cookie和session的操作

    一.cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是 ...

  9. 好消息!iconfont+开始支持彩色图标

    想必关注iconfont的同学都知道,iconfont最近做出了一次重大升级,升级成为iconfont+了,而这次更新,iconfont+居然开始支持彩色图标,这意味着我们能够使用更具有特色更形象的全 ...

  10. GATK4注意事项

    近期在测试多样品的WES的过程中发现用HC得到gvcf之后,合并多个样品的gvcf文件的过程中,使用CombineGVCFs的过程中很慢,发现官网推荐使用GenomicsDBImport 用法如下: ...