一、Kubernetes介绍

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。 Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台。Kubernetes作为云原生应用的基石,相当于一个云操作系统,其重要性不言而喻。

1、Kubernetes架构图

2、Kubernetes主要核心组件介绍

  1. etcd保存了整个集群的状态
  2. apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
  3. controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
  4. scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
  5. kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理
  6. kube-proxy负责为Service提供cluster内部的服务发现和负载均衡

二、Kubernetes基础服务

1、Pod介绍

每个Pod都有一个特殊的被称为“根容器”Pause容器。Pause容器对应的镜像属于Kubernetes平台的一部分,Pause作为Pod根容器,它的状态代表整个容器组的状态。除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器,Pod里的多个业务容器共享Pause容器的IP,共享Pause容器挂载的Volume。

Kubernetes为每个Pod分配唯一的IP的地址,称之为Pod IP,一个Pod里的多个容器共享Pod IP。Kubernetes要求底层网络支持集群内任意两个Pod之间的TCP/IP的直接通讯,采用虚拟二层网络技术来实现,一个Pod里的容器与另外主机上的Pod容器能够直接通信。

Pod一旦被创建,就会被放入到etcd中存储,随后会被Kubernetes Master调度到某个具体的Node上并进行绑定(Binding),随后该Pod 被对应的Node上的kubelet进程实例化成一组相关的docker容器运行起来。当Pod里的某个容器停止时,Kubernetes会自动检测到这个问题并且重新启动这个Pod (也就是重启Pod里的所有容器),如果Pod所在的Node节点宕机,则会将这个Node上所偶的Pod从新调度到其他Node节点上。

①Endpoint

Pod的IP加上这里的容器端口(container Port),就组成了一个全新的概念---Endpoint 它代表着此Pod里的一个服务进程的对外通讯地址。一个Pod也存在着多个Endpoint的情况,比如我们把Tomcat定义为一个Pod时,可以对外暴露端口与服务端口这两个Endpoint。

②Event

Event是一个事件的记录,记录事件的最早生成时间、最后重现时间、重复次数、发起者、类型,以及导致此事件的原因等众多信息。Event通常会关联到某个具体的资源上,是排查故障的重要参考,Node描述信息包含了Event,而Pod同样有Event记录。当我们发现某个Pod迟迟无法创建时,我们就可以用kubectl describe pod [Pod名称]来查看,定位问题。

2、Pod基本用法

①Pod创建一个容器

###创建一个名为nginx-deployment的Pod###
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx ##容器名称
image: daocloud.io/library/nginx:1.13.-alpine #镜像地址
imagePullPolicy: IfNotPresent
ports:
- containerPort:

②Pod创建两个容器

###nginx和tomcat容器组合成一个整体对外提供服务时,应将这两个容器打包为一个Pod###
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: demon-pod
spec:
replicas:
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: demon-nginx-docker
image: daocloud.io/library/nginx:1.13.-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort:
- name: demon-tomcat-docker
image: daocloud.io/library/tomcat:8.5.-jre8-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort:

查看Pod运行状态

kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
demon-pod-77857c4f5f-nrgnh / Running 40s 10.2.1.5 192.168.29.176

我们可以看到READY信息为2/2,表示Pod中的两个容器都成功运行了 (状态Running)

查看创建的Pod详细信息:

kubectl describe pod demon-pod-77857c4f5f-nrgnh
Name: demon-pod-77857c4f5f-nrgnh
Namespace: default
Node: 192.168.29.176/192.168.29.176
Start Time: Thu, Nov :: +
Labels: app=test
pod-template-hash=
Annotations: <none>
Status: Running
IP: 10.2.1.5
Controlled By: ReplicaSet/demon-pod-77857c4f5f
Containers:
.....

linux运维、架构之路-Kubernetes基础(一)的更多相关文章

  1. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  2. Linux运维工程师必须掌握的基础技能有哪些?

    这个问题挺好的,回答这个问题也是对自身的审查,看看自己还欠缺哪些.(所以我估计得好好思考下,也许下一刻我就会突然惊醒,发现我还是战⑤渣) 首先限定在Linux运维工程师上 回答仅代表我想到,不代表我都 ...

  3. Linux运维人员-服务器组成硬件基础

    第1章 1.1关于运维人员 1.1.1 运维的职责 数据不能丢 网站7*24小时运行 保证用户体验(用户体验要好) 1.1.2 运维原则 简单.易用.高效  === 简单.粗暴 1.2 服务器 1.2 ...

  4. Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)

    Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编   ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...

  5. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  6. Linux运维七:网络基础

    1:网线 2:交换机,路由器 交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备.它可以为接入交换机的任意两个网络节点提供独享的电信号通路.最常见的交换机是以太网交换机.其他常见的 ...

  7. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  8. 第一阶段·Linux运维基础-第1章·Linux基础及入门介绍

    01-课程介绍-学习流程 02-服务器硬件-详解 03-服务器核心硬件-服务器型号-电源-CPU 01-课程介绍-学习流程 1.1. 光看不练,等于白干: 1.2 不看光练,思想怠慢: 1.3 即看又 ...

  9. linux运维基础知识

    linux运维基础知识大全 一,序言 每一个微不足道的知识,也是未来的铺垫.每一份工作的薪资职位,也是曾经努力的结果. 二,服务器 1,运维人员工作职责: 1)保证数据不丢失:2)保证服务器24小时运 ...

随机推荐

  1. C#4.0中的协变和逆变

    原文地址 谈谈.Net中的协变和逆变 关于协变和逆变要从面向对象继承说起.继承关系是指子类和父类之间的关系:子类从父类继承所以子类的实例也就是父类的实例.比如说Animal是父类,Dog是从Anima ...

  2. DataGridView中的ComboboxCell报了System.ArgumentException:DagaGridViewComboBoxCell值无效错误

    原因是初始化的时候给ComboboxCell绑定了一系列的值,但是真正赋值的时候却给了一个不在那一系列值范围中的值,所以就报了这个错 在开发的时候难免会因为数据的问题出现这个问题,为了不让系统崩掉,就 ...

  3. 2019牛客暑期多校训练营(第一场)-A (单调栈)

    题目链接:https://ac.nowcoder.com/acm/contest/881/A 题意:给定两个长度均为n的数组a和b,求最大的p使得(a1,ap)和(b1,bp)等价,等价的定义为其任意 ...

  4. python并发编程-进程理论-进程方法-守护进程-互斥锁-01

    操作系统发展史(主要的几个阶段) 初始系统 1946年第一台计算机诞生,采用手工操作的方式(用穿孔卡片操作) 同一个房间同一时刻只能运行一个程序,效率极低(操作一两个小时,CPU一两秒可能就运算完了) ...

  5. 3d旋转焦点图

    在线演示 本地下载

  6. CSS3彩色进度条加载动画 带进度百分比

    在线演示       本地下载

  7. 总线(bus)简介

    内容来自于<Computer Organization>,这是我的一篇学习笔记

  8. 删库?半个DBA的跑路经验总结

    0. 国内呆不下了,赶紧出国 首先,不要选动车,要选最近的一班飞机,尽快出国,能走高速走高速,不然选人少的路线. 没错,我们 DBA 都是常备护照的. 切记,注意看高德地图实时路况. 我们有个前辈就是 ...

  9. yii自定义验证

    自定义验证类 class BaseModel extends Model { public function rules() { return [ ['obj', ContentSecurityVal ...

  10. 13 UA池和代理池

    一. 下载中间件 框架图 下载中间件(Downloader Middlewares) 位于scrapy引擎和下载器之间的一层组件. - 作用: (1)引擎将请求传递给下载器过程中, 下载中间件可以对请 ...