一、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. Mysql事务代码

    /// <summary> /// 删除相册 /// </summary> /// <param name="id"></param> ...

  2. CentOS7修改内核启动顺序

    CentOS7修改内核启动顺序: 1.首先查看当前系统有几个内核 cat /boot/grub2/grub.cfg |grep menuentry   2.查看当前默认内核 grub2-editenv ...

  3. Rsyslog收集应用日志

    收集系统其它服务日志,在客户端node1 上操作,示例以openstack-nova 服务的日志为例: 1.先修改配置文件 /etc/rsyslog.conf,完整内容如下: [root@node1 ...

  4. [转帖]2018年的新闻: 国内首家!腾讯主导Apache Hadoop新版本发布

    国内首家!腾讯主导Apache Hadoop新版本发布   https://blog.csdn.net/weixin_34194317/article/details/88811258 腾讯也挖了很多 ...

  5. 跨 PostgreSQL 大版本复制怎么做?| 逻辑复制

    当需要升级PostgreSQL时,可以使用多种方法.为了避免应用程序停机,不是所有升级postgres的方法都适合,如果避免停机是必须的,那么可以考虑使用复制作为升级方法,并且根据方案,可以选择使用逻 ...

  6. 【面试向】2019 年微软秋招笔试 Problem 3

    Problem Check if a positive integer $n$ can be written as sum of a positive integer and reverse of t ...

  7. 【转】.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现

    作者:Zhang_Xiang 原文地址:.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发 ...

  8. .Net Core Grpc Consul 实现服务注册 服务发现 负载均衡

    本文是基于..net core grpc consul 实现服务注册 服务发现 负载均衡(二)的,很多内容是直接复制过来的,..net core grpc consul 实现服务注册 服务发现 负载均 ...

  9. MySQL的事务和锁

    MySQL的事务和锁   阅读目录 什么是事务 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再 ...

  10. Django基础之jQuery操作

    Django基础之jQuery操作 jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.j ...