使用Kubectl部署应用
目录
使用Kubectl部署应用
Kubectl部署流程
部署一个简单的Demo网站
一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序。因此在开始之前,我们需要先确保集群已经准备就绪,无论是使用Minikube还是kubeadm创建的集群。
接下来,我们讲述使用Deployment(部署)对象来部署一个简单网站。
Kubectl部署流程
使用Kubectl的部署流程如下所示:

接下来我们根据这个流程部署一个简单的Demo网站。
部署一个简单的Demo网站
这里,我们可以通过创建Kubernetes Deployment对象来运行应用程序。那么我们需要编写一个YAML文件来定义Deployment对象。
1.编写Deployment对象的配置文件
在开始之前,我们需要对Deployment对象的配置有初步的了解。官方介绍文档如下所示:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#deployment-v1-apps
根据官方标准,我们定义了一个简单的Deployment配置:
apiVersion: apps/v1 #API对象版本,可通过“kubectl api-versions”命令查看
kind: Deployment #资源类型,区分大小写,可通过“kubectl api-resources”命令查看,这里使用Deployment对象
metadata: #标准的元数据
name: demo-deployment #当前Deployment对象名称,同一个命名空间下必须唯一
spec: #部署规范(目标),Deployment控制器会根据此模板调整当前Pod到最终的期望状态
replicas: # Pod数量,这里指运行5个Pod
selector: #选择器,其定义了Deployment控制器如何找到要管理的Pod
matchLabels: #匹配标签
app: demo #待匹配的标签键值对
template: # Pod模板定义
metadata: #标准的元数据
labels: #Pod标签
app: demo #定义Pod标签,由键值对组成
spec: #Pod规范
containers: #容器列表,Pod中至少有一个容器
- name: demo #容器名称
image: microsoft/dotnet-samples:aspnetapp #镜像地址
ports: #端口列表
- containerPort: #设置容器端口
如上面定义所示,我们定义了一个简单的部署示例,它将使用创建一个ReplicaSet对象以利用复制控制器创建5个Pod来运行“dotnet-samples”。
2.使用“kubectl create”执行资源创建
YAML文件准备好了,接下来我们来执行创建:
kubectl create -f deployment-demo.yaml

结合配置,这里有几个重点说明一下:
如上面配置所示,部署名称为“demo-deployment”。
此部署对象将创建5个复制的Pod,由replicas字段决定。如上图所示该部署创建了5个Pod。
selector字段定义了Deployment控制器如何找到要管理的Pod,所以标签的键值对一定不能出错。
template字段则定义了Pod模板,其子字段labels定义了Pod 的标签,spec字段则定义了容器。
执行创建部署之后,我们可以通过命令“kubectl get Deployment demo-deployment”来检查部署对象是否已经创建,部署是否已经完成:

如上图所示,上述字段分别代表:
READY代表是否已就绪,左侧数字表示当前已运行的副本数,右侧表示所需的副本数。
UP-TO-DATE表示已更新已实现预期状态的副本数。
AVAILABLE则表示用户可以使用的应用程序副本数。
AGE表示应用已运行的时间。
通用的,我们可以运行以下命令来查看副本集(ReplicaSet)对象:
kubectl get ReplicaSets -lapp=demo

通过上图可知,我们创建Deployment对象的过程实际上就是生成对应的副本集对象(Replica Set)并完成Pod副本的创建过程。
值得注意的是,副本集的名称格式为[部署名称]-[随机字符串]。随机字符串是随机生成的,并使用pod-template-hash作为种子。如何查看pod-template-hash呢?使用如下命令即可:
kubectl get pods -lapp=demo --show-labels

如上图所示,5个Pod已经部署完成。
使用Kubectl部署应用的更多相关文章
- kubernetes 源码安装部署 1.12
一. 前期准备 参考文档 https://jimmysong.io/kubernetes-handbook/practice/create-tls-and-secret-key.html 1. 安装g ...
- CentOS上手工部署kubernetes集群
本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...
- kubectl客户端工具远程连接k8s集群
一.概述 一般情况下,在k8smaster节点上集群管理工具kubectl是连接的本地http8080端口和apiserver进行通讯的,当然也可以通过https端口进行通讯前提是要生成证书.所以说k ...
- heptio scanner kubernetes 集群诊断工具部署说明
heptio scanner 是一款k8s 集群状态的诊断工具,还是很方便的,但是有一点就是需要使用google 的镜像 参考地址 https://scanner.heptio.com/ 部署 kub ...
- Kubernetes+Prometheus+Grafana部署笔记
一.基础概念 1.1 基础概念 Kubernetes(通常写成“k8s”)Kubernetes是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可 ...
- kubernetes高可用设计-master节点和kubectl
部署master 节点 上一遍是CA证书和etcd的部署,这一篇继续搭建k8s,废话不多说.开始部署. kubernetes master 节点包含的组件有: kube-apiserver kube- ...
- 二进制方式部署Kubernetes 1.6.0集群(开启TLS)
本节内容: Kubernetes简介 环境信息 创建TLS加密通信的证书和密钥 下载和配置 kubectl(kubecontrol) 命令行工具 创建 kubeconfig 文件 创建高可用 etcd ...
- ASP.NET Core on K8S学习初探(3)部署API到K8S
在上一篇<基本概念快速一览>中,我们把基本的一些概念快速地简单地不求甚解地过了一下,本篇开始我们会将ASP.NET Core WebAPI部署到K8S,从而结束初探的旅程. Section ...
- ASP.NET Core on K8S深入学习(2)部署过程解析与Dashboard
上一篇<K8S集群部署>中搭建好了一个最小化的K8S集群,这一篇我们来部署一个ASP.NET Core WebAPI项目来介绍一下整个部署过程的运行机制,然后部署一下Dashboard,完 ...
随机推荐
- Permission 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- 01-Spring Security框架学习
目录 01-Spring Security框架学习 简介 Spring Security 是什么 Spring Security 解决那些问题 Spring Security 的优点 历史背景 Spr ...
- 前端笔记之React(八)上传&图片裁切
一.上传 formidable天生可以处理上传的文件,非常简单就能持久上传的文件. 今天主要讲解的是,前后端的配合套路. 上传分为同步.异步.同步公司使用非常多,异步我们也会讲解. 1.1 先看一下a ...
- Docker系列之烹饪披萨(二)
前言 上一篇我们讲解了虚拟机和容器的区别,本节我们来讲讲Docker中关于Dockerfile.镜像.容器等基本概念.Docker是一个在容器内开发.部署.运行应用程序的平台,Docker本质上是容器 ...
- C# Quartz结合控制台实现定时任务
前言: Quartz一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,基于C#写成,可应用于winform.asp.net.asp.net core应用中.提 ...
- Linux启动之旅
引言 某出租房内,某台电脑的电源键被按下,于是开启了一段Linux启动之旅... BIOS 系统启动,首先进入BIOS. ● BIOS 为 Base Input/Output System(基本输入输 ...
- android ——多线程编程
1.定义一个线程只需要新建一个类继承自Thread.然后重写run()方法,并在里面编写耗时逻辑即可: class MyThread extends Thread{ public void run() ...
- python案例:使用if语句实现一个猜拳游戏
任务要求: 在控制台中提示输入石头.剪刀.布,按回车键,然后给出游戏结果. 分析: 我们知道在游戏规则中,石头克剪刀,剪刀克布,布克石头.但是这在计算机中并不是很好直接的表示,因此我们分别用0.1.2 ...
- flask项目部署到云服务器+域名绑定
一.效果演示 首页展示 播放页面 该项目部署只为学习,所以用的服务器是腾讯云服务器10元/月,域名也是在腾讯云买的.com 55元/年 因为本人比较穷 哈哈
- vue组件传值之$attrs、$listeners
当有父组件A,子组件B,孙子组件C的时候 A-B B-C 的传值想必大家应该都非常熟悉了,通过props和$emit和$on来进行传值 那么A-C之间的传值要怎么做呢? 1.event.bus总线传值 ...