第一章 Kubernetes基础笔记

本文详细介绍了Kubernetes的基础概念,包括Master、Node、Pod、Service等,并深入讲解了Kubernetes集群的搭建过程,包括环境准备、Master节点和Work节点的配置。此外,还提到了常见问题及解决方案,如节点认证信息过期、端口占用等问题。
摘要由CSDN通过智能技术生成

一、Kubernetes概述

1、背景

kubernetes(简称k8s)是google基于Blog进行改进后,开源出来的一款“容器管理应用”。由于近几年来容器技术的火爆,许许多多的服务都不会直接部署在linux主机或各大云厂商的虚拟机上;利用Docker,将每个服务做成一个image,把他们跑在各自的Container中。

这样做的好处有非常多,比如环境配置隔离、服务启动快、移植便捷等等。但是使用的Container多到一定程度,就会带来容器管理上的问题:使用docker ps命令之后有一大堆Container,如果标识的不清楚也很容易混淆;某些分布式服务,需要将Docker部署到许多不同的机器上,这也会增加我们运维的难度。因此,我们现在需要一款“专门管理容器”的平台,为我们提供可视化界面,方便我们对各个容器进行管理。

k8s就是这样一款辅助我们管理容器的平台,支持管理在分布式环境(即多台服务器上)启动的 Container。

 

2、基础概念

2.1、Master

Cluster的大脑,主要职责是调度,可以运行多个master来保证高可用。

2.2、Node

职责是运行容器应用,Node由Master管理,负责监控并汇报容器的状态,同时根据Master的要求管理容器的生命周期。 ·

2.3、Pod

1)PodK8s的最小工作单元,每个Pod包含一个或多个容器。 

  • ·有些容器天生就是需要紧密联系,一起工作。Pod提供了比容器更高层次的抽象,K8s以Pod为最小单位进行调度、扩展、共享资源、管理生命周期。
  • ·Pod中的所有容器使用同一个网络的namespace,即相同的IP地址和Port空间。它们可以直接用localhost通信。同样的,这些容器可以共享存储,当K8s挂载Volume到Pod上,本质上是将volume挂载到Pod中的每一个容器。

2)Pod 控制器

K8s通常不直接创建Pod,而是通过Controller来管理Pod。Controller中定义了pod的部署属性,比如几个副本、在什么样的Node上运行等。

K8s提供了多种Controller,包括Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等。

  • ·ReplicationController:副本控制器,确保Pod的数量始终保持设定的个数。也支持Pod的滚动更新。
  • ·ReplicaSet:副本集,它不直接使用,有一个声明式更新的控制器叫Deployment来负责管理。但是Deployment只能负责管理那些无状态的应用。
  • ·StatefulSet:有状态副本集,负责管理有状态的应用。
  • ·DaemonSet,如果需要在每一个Node上只运行一个副本,而不是随意运行,就需要DaemonSet。
  • ·Job:运行作业,对于时间不固定的操作,比如某个应用生成了一大堆数据集,现在需要临时启动一个Pod去清理这些数据集,清理完成后, 这个Pod就可以结束了。 这些不需要一直处于运行状态的应用,就用Job这个类型的控制器去控制。如果Pod运行过程中意外中止了,Job负责重启Pod。如果Pod任务执行完了,就不需要再启动了。
  • ·Cronjob:周期性作业。

2.4、Service

Deployement可以部署多个副本,每个Pod都有自己的副IP,外界如何访问这些副本。Pod会被频繁的销毁和重启,IP实时变化,不能用IP, 答案是通过service。K8s service定义了外界访问一组特定Pod的方式。service有自己的IP和端口,service为Pod提供了负载均衡。

2.5、Namespace:

Namespace将物理的Cluster逻辑上划分成多个虚拟Cluster,每个Cluster就是一个Namespace。不同的Namespace里的资源是完全隔离的。

  • ·default:默认的namespace
  • ·kube-system: K8s自己创建的的系统资源放到这个namespace

2.6、Cluster

Cluster 是计算、存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。

2.7、Node 

工作节点,职责是运行容器应用。Node由Master管理,Node负责监控并汇报容器的状态,并根据Master的要求管理容器的生命周期。Node运行在Linux操作系统,可以是物理机或者是虚拟机。

3、K8S的架构

Kubernetes集群包含有节点代理Kubelet和Master组件(APIs、scheduler、etc),下面是K8S的架构图。

 

Master节点包含API Server、Scheduler调度器、ControllerManager控制器管理器这三个核心的组件。

Node节点包含的核心组件有Kubelet、Docker容器引擎、Kube-proxy

3.1、API Server(kube-apiserver)

提供了HTTP/HTTPS RESTful API,即Kubernetes API。 API server是Kubernetes Cluster的前端接口。其他客户端工具(CLI或UI)以及K8S其它组件可以通过它管理Cluster资源。

3.2、Scheduler(kube-scheduler)

调度器,它负责决定将Pod放在哪个Node上运行。调度时候考虑Cluster拓扑,各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。

3.3、Controller-Manager

负责监控每一个Controller(控制器)的健

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值