kubernetes 应用快速入门

使用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

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

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

下面我们对刚刚操作的命令做一个大致的总结

  • 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

时间: 2024-10-23 05:32:27

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

(转)Kubernetes Operator 快速入门教程

https://www.qikqiak.com/post/k8s-operator-101/ 在 Kubernetes 的监控方案中我们经常会使用到一个Promethues Operator的项目,该项目可以让我们更加方便的去使用 Prometheus,而不需要直接去使用最原始的一些资源对象,比如 Pod.Deployment,随着 Prometheus Operator 项目的成功,CoreOS 公司开源了一个比较厉害的工具:Operator Framework,该工具可以让开发人员更加容易的

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

Kubernetes网络一直是一个非常复杂的主题.本文将介绍Kubernetes实际如何创建网络以及如何为Kubernetes集群设置网络. 本文不包括如何设置Kubernetes集群.这篇文章中的所有例子都将使用Rancher 2.0集群(其他平台也同样适用).即使你打算使用其他的公有云管理Kubernetes服务,也希望你对Kubernetes网络的工作原理有更好的了解. 如何使用Kubernetes网络  许多Kubernetes部署指南中包含了在K8S部署中部署Kubernetes网络C

Kubernetes/4.Kubernetes快速入门

Kubernetes快速入门 通过本章节的学习,你可以充分了解到一个https的kubernetes集群中所需的证书及其作用,以及kubernetes语境内的api资源类型,最后我还补充了几个基础的GET命令,此时你可以登录到上一章节我们使用kubeadm创建的集群,进行一些查询操作了. 证书管理 API资源模型 API资源类型 命令补充 备注 证书管理 k8s于生产环境运行时,我强烈建议大家运行在https的安全环境下,其证书可分为以下三大类: root CA: apiserver:apise

kubernetes系列教程(三)kubernetes快速入门

写在前面 kubernetes中涉及很多概念,包含云生态社区中各类技术,学习成本比较高,k8s中通常以编写yaml文件完成资源的部署,对于较多入门的人来说是个较高的门坎,本文以命令行的形式代理大家快速入门,俯瞰kubernetes核心概念,快速入门. 1. 基础概念 1.1 集群与节点 kubernetes是一个开源的容器引擎管理平台,实现容器化应用的自动化部署,任务调度,弹性伸缩,负载均衡等功能,cluster是由master和node两种角色组成,其中master负责管理集群,master节

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题

javaweb-html快速入门

本文主要是进行HTML简单介绍(详细的属性查帮助文档就行了,这里主要为快速入门,赶时间,在最短的时间中看明白一个html文件的代码(如果能称之为代码的话)详细的样式表,布局啥的有时间再研究吧) HTML 1.html的简介 1.1,html的全称:HyperText Mark-up Language ,超文本标记型语言,是网页的语言. 超文本:比文本更加强大(后面还会讲到XML,可扩展标记性语言) 标记:就是标签,html所有操作都是通过标签直接或间接的操作(把需要操作的数据通过标签封装起来)

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话 安装Python 从http://www.python.org/downloads/ 下载安装程序 安装完后,再添加到环境变量. 安装Oracle JDK 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/ 选择要下载的Java版本(推荐Java 7). 选择一个JDK下载并接受许可协议. 一旦下载,运行安装程序. 安装Ant Ant:下载http

bash编程快速入门

首先,我们简单的介绍一下bash,bash是GNU计划编写的Unixshell,它是许多Linux平台上的内定shell,它提供了用户与系统的很好的交互,对于系统运维人员,bash的地位是举足轻重的,bash编程能很快处理日常的任务 bash入门,一个最简单的bash例子 #vim hello.sh #!/bin/bash #This is the first example of the bash #echo "Hello world" 下面,我们就这个简单的bash 脚本来介绍一下

定时器(Quartz)快速入门

Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger. SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务.因此,对于夏令时来说,根本不需要做任何特殊的处理来"保持进度".它只是简单地保持每隔若干毫秒来触发一次,无论你的 SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次. CronTrigger 在特定"格林日历"时刻触发纳入进程的