kubernetes入门(05)kubernetes的核心概念(2)
一、使用 kubectl run 创建 pod(容器)
命令 kubectl run类似于 docker run,可以方便的创建一个容器(实际上创建的是一个由deployment来管理的Pod):

等到容器变成Running后,就可以用 kubectl 命令来操作它了,比如
- kubectl get - 类似于 docker ps ,查询资源列表
- kubectl describe - 类似于 docker inspect ,获取资源的详细信息
- kubectl logs - 类似于 docker logs ,获取容器的日志
- kubectl exec - 类似于 docker exec ,在容器内执行一个命令
二、使用 yaml 创建 pod(容器)
前面是通过 kubectl run 来启动了第一个Pod,但是 kubectl run 并不支持所有的功能。
在Kubernetes中,更经常使用yaml文件来定义资源,并通过 kubectl create -f file.yaml 来创建资源。
比如,一个简单的nginx Pod可以定义为:

前面提到, kubectl run 并不是直接创建一个Pod,而是先创建一个Deployment资源
(replicas=1),再由Deployment来自动创建Pod,这等价于这样一个配置:

三、使用volume
Pod的生命周期通常比较短,只要出现了异常,就会创建一个新的Pod来代替它。
容器内的数据会随着Pod消亡而自动消失。
Volume就是为了持久化容器数据而生,比如可以为redis容器指定一个hostPath来存储redis数据:

Kubernetes volume支持非常多的插件,可以根据实际需要来选择:
- emptyDir
- hostPath
- gcePersistentDisk
- awsElasticBlockStore
- nfs
- iscsi
- flocker
- glusterfs
- rbd
- cephfs
- gitRepo
- secret
- persistentVolumeClaim
- downwardAPI
- azureFileVolume
- vsphereVolume
四、使用service
前面虽然创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,并不建议直接拿Pod的IP来交互。
那如何来访问这些Pod提供的服务呢?
使用Service。Service为一组Pod(通过labels来选择)提供一个统一的入口,并为它们提供负载均衡和自动服务发现。
比如,可以为前面的 nginx-app 创建一个service:

这样,在cluster内部就可以通过 http://10.0.0.66 和 http://node-ip:30772 来访问nginx-app。
而在cluster外面,则只能通过 http://node-ip:30772 来访问。
个人理解::真正处理处理请求的pod可能在入口node上,也可能被service再次分发到其他的node上。
四、扩展应用
通过修改Deployment中副本的数量(replicas),可以动态扩展或收缩应用,这些自动扩展的容器会自动加入到service中,而收缩回收的容器也会自动从service中删除。
$ kubectl scale --replicas=3 deployment/nginx-app
$ kubectl get deploy

五、滚动升级
滚动升级(Rolling Update)通过逐个容器替代升级的方式来实现无中断的服务升级:
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2
在滚动升级的过程中,如果发现了失败或者配置错误,还可以随时回滚:
kubectl rolling-update frontend-v1 frontend-v2 --rollback
需要注意的是,rolling-update只针对ReplicationController,不能用在策略不是RollingUpdate的Deployment上(Deployment可以在spec中设置更新策略为RollingUpdate,默认就是RollingUpdate):

而更新应用的话,就可以直接用 kubectl set 命令:
kubectl set image deployment/nginx-app nginx-app=nginx:1.9.1
滚动升级的过程可以用 rollout 命令查看:
kubectl rollout status deployment/nginx-app
Deployment也支持回滚:

六、资源限制
Kubernetes通过cgroups提供容器资源管理的功能,可以限制每个容器的CPU和内存使
用,比如对于刚才创建的deployment,可以通过下面的命令限制nginx容器最多只用
50%的CPU和128MB的内存:

七、健康检查
Kubernetes作为一个面向应用的集群管理工具,需要确保容器在部署后确实处在正常的运行状态。
Kubernetes提供了两种探针(Probe,支持exec、tcp和http方式)来探测容器的状态:
- LivenessProbe:探测应用是否处于健康状态,如果不健康则删除重建改容器
- ReadinessProbe:探测应用是否启动完成并且处于正常服务状态,如果不正常则更
新容器的状态
对于已经部署的deployment,可以通过 kubectl edit deployment/nginx-app 来更新manifest,增加健康检查部分:

八、集群联邦
集群联邦(Federation)用于跨可用区的Kubernetes集群,需要配合云服务商(如GCE、AWS)一起实现。

九、创建kubernetes集群
1、minikube

2、play-with-k8s
Play with Kubernetes提供了一个免费的Kubernets体验环境,直接访问http://play-withk8s.
com就可以使用kubeadm来创建Kubernetes集群。注意,每个创建的集群最长可以
使用4小时。
Play with Kubernetes有个非常方便的功能:自动在页面上显示所有NodePort类型服务
的端口,点解该端口即可访问对应的服务。
详细使用方法可以参考Play-With-Kubernetes。
3、Katacoda playground
Katacoda playground也提供了一个免费的2节点Kuberentes体验环境,网络基于
WeaveNet,并且会自动部署整个集群。但要注意,刚打开Katacoda playground页面时
集群有可能还没初始化完成,可以在master节点上运行 launch.sh 等待集群初始化完
成。
部署并访问kubernetes dashboard的方法:

然后点击Terminal Host 1右边的,从弹出的菜单里选择View HTTP port 8080 on Host1,即可打开Kubernetes的API页面。在该网址后面增加 /ui 即可访问dashboard。
kubernetes入门(05)kubernetes的核心概念(2)的更多相关文章
- Kubernetes 入门之Kubernetes 的基本概念和术语
Kubernetes是什么? 他是一个全新的基于容器技术分布式架构领先方案: 他也是一个开放的开发平台: 他也是一个完备的分布式系统支撑平台: Kubernetes的基本慨念和术 ...
- Kubernetes入门(一)——Kubernetes v1.18.5 安装部署
Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理:二是使用官方提供的k ...
- Docker入门——理解Docker的核心概念
1 前言 相信不少人听过这么一句话: 人类的本质是复读机. 在软件开发领域也一样,我们总是想寻找更好地方式复制优秀的逻辑或系统.最核心的方法是抽取通用逻辑和组件,把差异化的东西接口化或配置化,达到复用 ...
- Maven入门-2.Maven一些核心概念介绍
1.Maven仓库2.Maven坐标3.Maven插件和目标4.Maven生命周期4.1 clean:清理项目4.2 default:构建项目(重要)4.3 site:建立项目站点 1.Maven仓库 ...
- 入门大数据---Flink核心概念综述
一.Flink 简介 Apache Flink 诞生于柏林工业大学的一个研究性项目,原名 StratoSphere .2014 年,由 StratoSphere 项目孵化出 Flink,并于同年捐赠 ...
- kubernetes核心概念
摘抄自: https://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:A ...
- Kubernetes核心概念总结
目录贴:Kubernetes学习系列 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:APIServer.scheduler.controller manager.etcd ...
- 第3 章 : Kubernetes 核心概念
Kubernetes 核心概念 本文整理自 CNCF 和阿里巴巴联合举办的云原生技术公开课的课时 3:Kubernetes 核心概念.本次课程中,阿里巴巴资深技术专家.CNCF 9个 TCO 之一 李 ...
- 微服务 + Docker + Kubernetes 入门实践 目录
微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...
- 入门 - 复习Kubernetes核心概念 (八)
本文将会简单介绍Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些概 ...
随机推荐
- C#封装程序集属性方法注释说明
一.使用封装程序集好处: 在很多分布式应用程序开发中,针对每一种功能可能条用的接口不一样,往往习惯将需要被调用的接口,封装成DLL给调用方应用后使用,这样既规范了调用的方式,又避免了调用出现参数请求方 ...
- windows下 python3.5+tensorflow 安装
个人随笔,备忘参考 首先最近的tensorflow 对python3.5.x友好,我先装了Python3.6,查其他的一些博客说出现问题,后来重装3.5.0.下载用迅雷,超快. 安装比较简单,官网下载 ...
- vue项目架构
一.工程说明: 1.代码git仓库地址:git@gitlab.*****.git. 2.目录结构: 1>.index.html 为build打包发布网页入口: 2>.lieda文件夹代码项 ...
- 每个java初学者都应该搞懂的问题
对于这个系列里的问题,每个学JAVA的人都应该搞懂.当然,如果只是学JAVA玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列.内容均来自于CSDN的经典老贴. ...
- 笔记:Spring Cloud Ribbon 客户端配置详解
自动化配置 由于 Ribbon 中定义的每一个接口都有多种不同的策略实现,同时这些接口之间又有一定的依赖关系,Spring Cloud Ribbon 中的自动化配置能够很方便的自动化构建接口的具体实现 ...
- C++模板入门教程(一)——模板概念与基本语法
转载请保留以下声明 作者:赵宗晟 出处:http://www.cnblogs.com/zhao-zongsheng/ 前言 有些人提到C++模板就会下意识地觉得可怕.看不懂.避而远之.其实模板并不复杂 ...
- 用SpringBoot搭建简单电商项目 01
前几节呢,我们已经简单介绍了SpringBoot框架的使用,从这一节开始,我们尝试着使用SpringBoot框架来一步一步搭建一个简单电商项目.当然了,这不是真正的电商项目,你可以看成是一个CRUD案 ...
- Suricata 之IPS模式
IPS 1.Suricata 本身是不具有拦截功能的,想要让它拦截包需要配合 iptables 使用. 首先要确定安装的suricata是否支持IPS模式,如果在安装编译的时候没有启用IPS模式,NF ...
- [BZOJ 1079][SCOI 2008]着色方案
1079: [SCOI2008]着色方案 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2237 Solved: 1361[Submit][Stat ...
- 浅谈RMQ
RMQ是一类求区间极值的问题 有一种 \(O\left(nlogn\right)\) 的解法,用倍增实现 倍增算法 变量的定义 \(A_i\) : 原数组 \(f_{i,j}\) : 以 \(i\) ...
