kubernetes 两个 node 的pod 无法互相访问_Kubernetes学习之基本概念

Master

集群的控制节点,负责整个集群的管理和控制

    • kube-apiserver:提供HTTP Rest 接口关键服务进程,是所有资源增删查等操作入口,也是集群控制的入口进程
    • kube-controller-manager:kubernetes 里所有资源对象的自动化控制中心
    • kube-scheduler:负责资源调度(Pod调度)的进程
    • etcd:保存kubernetes所有资源对象的数据,存储

Node

kubernetes集群中工作负载节点,会被master分配工作负载(docker容器)

    • kubelet:负责pod对应的容器的创建启停任务,实现集群管理的基本功能
    • kube-proxy:实现kubernetes Service的通信与负载均衡机制的重要组件
    • Docker Engine(docker):Docker引擎,负责本机的容器创建和管理工作

kubectl get nodes #查询集群中node kubectl desribe node #查询node详细信息

Pod

pod是k8s集群中运行部署应用或服务的最小单元,是一个运行服务的实例

    • pod的组成
7b7c50210acdde6c9ec3887971c3c288.png
    • Pod、容器、和Node的关系

Label(标签)

cbc785d021ea7cb430d5b5e1ca2b6d48.png

Label是kubernets系统中核心的概念,Label是一个key=value的键值对,其中key域value由用户指定

Replication Controller(RC:复制控制器)

RC是kubernetes系统核心概念,它定义一个期望的场景,即声明某种POd的副本数量在任意时刻符合某个预期值,通过RC,kubernetes 实现了用户应用集群的高可用性,

RC包含如下几部分

  • Pod期待的副本数(replicas)
  • 用于筛选目标Pod的Label Selector
  • 当Pod的副本数量小于预期数量时,用于创建新Pod的Pod模板(template)

RC 特性作用

  • 通过定义一个RC实现Pod的创建过程过程及副本数量的自动控制
  • RC里包含完整的Pod定义模板
  • RC通过Label Selector 机制实现对Pod副本的自动控制
  • 通过改变RC里边的Pod副本数量,可以实现Pod的扩容或缩容功能
  • 通过改变RC里边Pod模板中的镜像版本,实现Pod的滚动升级功能

Deployment(部署)

目标:解决Pod编排问题,用户对k8s集群的一次更新操作,使用Deployment 来自动管理ReplicaSet,Deployment不负责pod创建

Deployment 使用场景如下

  • 创建一个Deployment对象来生成对应的Replica Set 并完成Pod副本的创建过程
  • 检测Deployment的状态来看部署动作是否完成(Pod)
  • 更新Deployment以创建新的Pod(如镜像升级)
  • 如果当前Deployment不稳定,回滚到早先的Deployment版本
  • 暂停Deployment以便于一次性修改多个PodTemplaSpec 的配置项,之后再恢复Deployment,进行新的发布
  • 扩展Deployment以应对高负载
  • 查看Deployment的状态,以此作为发布是否成功的指标。、
#创建Deployment kubectl create -f xx-deployment.yaml #查看Deployment的信息 kubectl get deployments #查看对应Replica Set kubectl get rs

Service (服务)

Pod、RC、Service逻辑关系如下

89835eb2d84e4a990e8407ad113491c0.png

kubernetes的Service 定义了一个服务的访问入口地址,前端的应用(Pod)通过这个入口地址访问其背后一组由Pod副本组成的集群实例,Service与其后端Pod副本集群直接则通过Label Selector 来实现,而RC的作用是保证Service的服务能力和服务质量始终处于预期的标准。

#查询Endpoint 列表 kubectl get endpoints

Volume (存储卷)

Volume 是pod中能够被多个容器访问的共享目录。

k8s提供了丰富的 vloume类型,如下

  1. emptyDir
      • 临时空间 ,用于某些应用程序运行时所需要的临时目录,无须永久保留
      • 长时间任务的中间过程CheckPoint的临时保存目录
      • 一个容器需要从另一个容器获取数据的目录(多容器共享目录)
  1. hostPath

hostPath为Pod上挂载宿主机上的文件或者目录,主要用于如下几方面

  • 容器应用程序生产的日志需要永久保存时,可以使用宿主机的高速文件系统进行存储
  • 需要访问宿主机上Docker引擎内部数据结构的容器应用时,,通过定义hostPath为宿主机/var/lib/docker目录,使用容器内部应用可以直接访问Docker的文件系统
  • 在不同的 Node上具有相同配置的Pod可能会应用宿主机上的目录和文件不同而导致对Volume上目录和文件访问结果不一致
  • 使用了资源配额管理,则kubernetes无法将hostPath在宿主机上使用的资源纳入管理。
  1. gcePersistentDisk

使用谷歌公有云提供的永久磁盘,

  1. awsElasitcBlockStore
  2. NFS

使用NFS网络文件系统提供的共享目录存储数据,需部署NFS Server。定义NFS类型的 volume实例如下

volume: - name: nfs nfs: server:nfs-server. path: "/"

Namespace(命名空间)

Nmaespace(命名空间)是Kubernetes系统的另一个非常重要概念,Namesapce 很多情况下用于实现多租户的资源隔离,Namespace通过将集群内部的资源对象“分配”到不同的Namespace中,形成逻辑上分组的不同项目、小组或者用户组,便于不同的分组在共享使用整个集群的资源同时还能被分别管理。

Kubernetes 集群启动后,创建了名为“default”的Namesapce,通过kubectl可以查询

kubectl get namespacesNAME   LABELS     STSTUSdefault    Active

Namespace 定义实例:

apiVersion: v1kind: Namespacemetdata:    name:developemt

指定namesapce实例

apiVersion: v1kind: Podmetdata:    name:busybox    namespace:developemtspec: containers: - image: busybox   command:    - sleep:    - "3600"  name:busybox    

Annotation(注解)

Annotation和label类似,也是用key/value键值的形式进行定义,它主要定义Kubernetes对象的元数据(Metdata)

Annotation记录如下信息:

    • build信息、release信息、Docker镜像信息等
    • 日志库、监控库、分析库等资源库的地址信息
    • 程序调试工具,如工具名称、版本号等
    • 团队的联系信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值