linux运维、架构之路-Kubernetes基础(一)
一、Kubernetes介绍
Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。 Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台。Kubernetes作为云原生应用的基石,相当于一个云操作系统,其重要性不言而喻。
1、Kubernetes架构图
2、Kubernetes主要核心组件介绍
- etcd保存了整个集群的状态
- apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
- controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
- scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
- kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理
- 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基础(一)的更多相关文章
- linux运维架构师职业规划
1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...
- Linux运维工程师必须掌握的基础技能有哪些?
这个问题挺好的,回答这个问题也是对自身的审查,看看自己还欠缺哪些.(所以我估计得好好思考下,也许下一刻我就会突然惊醒,发现我还是战⑤渣) 首先限定在Linux运维工程师上 回答仅代表我想到,不代表我都 ...
- Linux运维人员-服务器组成硬件基础
第1章 1.1关于运维人员 1.1.1 运维的职责 数据不能丢 网站7*24小时运行 保证用户体验(用户体验要好) 1.1.2 运维原则 简单.易用.高效 === 简单.粗暴 1.2 服务器 1.2 ...
- Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)
Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编 ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- Linux运维七:网络基础
1:网线 2:交换机,路由器 交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备.它可以为接入交换机的任意两个网络节点提供独享的电信号通路.最常见的交换机是以太网交换机.其他常见的 ...
- Linux运维企业架构实战系列
Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...
- 第一阶段·Linux运维基础-第1章·Linux基础及入门介绍
01-课程介绍-学习流程 02-服务器硬件-详解 03-服务器核心硬件-服务器型号-电源-CPU 01-课程介绍-学习流程 1.1. 光看不练,等于白干: 1.2 不看光练,思想怠慢: 1.3 即看又 ...
- linux运维基础知识
linux运维基础知识大全 一,序言 每一个微不足道的知识,也是未来的铺垫.每一份工作的薪资职位,也是曾经努力的结果. 二,服务器 1,运维人员工作职责: 1)保证数据不丢失:2)保证服务器24小时运 ...
随机推荐
- springboot 用redis缓存整合spring cache注解,使用Json序列化和反序列化。
springboot下用cache注解整合redis并使用json序列化反序列化. cache注解整合redis 最近发现spring的注解用起来真的是很方便.随即产生了能不能吧spring注解使用r ...
- python 操作mongodb 文件相关
https://api.mongodb.com/python/current/tutorial.html# 文档地址 from pymongo import MongoClientfrom gridf ...
- 小白学习django第四站-关联数据库
使用mysql连接django首先要配置好相关环境 首先在setting.py配置数据库信息(需要现在mysql中创建一个数据库) 在setting.py那个目录的__init__.py文件中写入 之 ...
- spring + dubbo 学习
新启动的项目中可能会使用到dubbo,因为之前并没有接触过,所以先小试一下 示例运行环境准备:OS X 10.10.5 + java version "1.8.0_40" zook ...
- Java版本及历史简述
Java版本及历史简述 初学Java,对于Java那么多版本很困惑,这里做一点笔记,如有错误希望指出. Java由Sun公司创造,后Sun公司被Oracle公司收购,Java也随之变为Oracle的产 ...
- centos配置vsftp,ftp服务
1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 yum -y install vsftpd 1.2.修改配置文 ...
- mysql中有条件的插入语句
今天在参加笔试的过程中,看到一道题,大概意思就是说,当满足了条件就执行插入语句,当时就蒙了,之前从来都没有考虑过满足条件才插入的情况,所以一直都是这样写的 insert into table_name ...
- SpringCloudGateWay之限流
一.引言在高并发系统中,经常需要限制系统中的电流化妆.一方面是防止大量的请求使服务器过载,导致服务不可用,另一方面是防止网络攻击.常用的限流方法,如hystrix.应用线程池隔离.超过线程池的负载和g ...
- Docker 环境下部署 redash
环境: centos7 官网:https://redash.io/help/open-source/dev-guide/docker 一.安装步骤 1.虚拟机安装 安装vmware,并安装centos ...
- 关于sqlmap的两个小坑
i春秋作家:__LSA__ 0x00 概述 近日在利用sqlmap注入测试时遇到一个奇怪的现象,高版本sqlmap无法检测出注入,但是低版本的可以测出注入,并且能跑出数据不是误报,经过对比测试和查看s ...