K8s基本知识要点03

目录

一、Kuberbetes基本知识要点

Kubernetes概述

Kubernetes组件

二、k8s核心资源Pod介绍

Pod概念

Pod如何管理多个容器

如何创建一个Pod资源

资源清单YAML文件书写技巧

常用pod命令


一、Kuberbetes基本知识要点

Kubernetes概述

Kubernetes 是一个全新的基于容器技术的分布式系统支撑平台。是 Google 开源的容器集群管理系统
(谷歌内部 :Borg )。在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和
动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。并且具有完备的集群管理能力,多
层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡
器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及
多粒度的资源配额管理能力。

Kubernetes组件

Master node:主节点
kubectl :管理资源,对资源进行增删改查,一般安装在master node ,非常重要的命令,操作资源                                         
apiserver:提供了k8s资源操作的唯一入口,所有操作都要和apiserver交互,将操作资源的结果成功或失败信息放入到etcd数据库中,
scheduler:调度器,通过与apiserver交互,将pod调度到最优的节点
controller-manager:集群内部管理中心
Etcd:存储了key:value数据信息,网络资源的信息
calico:网络插件,跨主机跨节点通信。
docker
work node:工作节点
kubelet:报告自身信息到apiserver,apiserver会把信息更新到etcd,启动pod,删除pod等
kube-proxy:提供网络代理,负载均衡
calico
coredns:提供dns服务

二、k8s核心资源Pod介绍

Pod概念

Pod是Kubernetes中的最小调度单元,k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定一个镜像,这样就可以用来运行具体的服务。一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机的进程。

Pod是Kubernetes中的最小调度单元,k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定一个镜像,这样就可以用来运行具体的服务。一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机的进程。

Pod是需要调度到k8s集群的工作节点来运行的,具体调度到哪个节点,是根据scheduler调度器实现的。

Pod如何管理多个容器

Pod中可以同时运行多个容器。同一个Pod中的容器会自动的分配到同一个 node 上。同一个Pod中的容器共享资源、网络环境,它们总是被同时调度,在一个Pod中同时运行多个容器是一种比较高级的用法,只有当你的容器需要紧密配合协作的时候才考虑用这种模式。例如,你有一个容器作为web服务器运行,需要用到共享的volume,有另一个“sidecar”容器来从远端获取资源更新这些文件。

如何创建一个Pod资源

创建pod流程:

master节点:kubectl -> kube-api -> kubelet -> CRI容器环境初始化

第一步:

客户端提交创建Pod的请求,可以通过调用API Server的Rest API接口,也可以通过kubectl命令行工具。如kubectl apply -f filename.yaml(资源清单文件)

第二步:

apiserver接收到pod创建请求后,会将yaml中的属性信息(metadata)写入etcd。

第三步:

apiserver触发watch机制准备创建pod,信息转发给调度器scheduler,调度器使用调度算法选择node,调度器将node信息给apiserver,

apiserver将绑定的node信息写入etcd

调度器用一组规则过滤掉不符合要求的主机。比如Pod指定了所需要的资源量,那么可用资源比Pod需要的资源量少的主机会被过滤掉。

第四步:

apiserver又通过watch机制,调用kubelet,指定pod信息,调用Docker API创建并启动pod内的容器。

第五步:

创建完成之后反馈给kubelet, kubelet又将pod的状态信息给apiserver,

apiserver又将pod的状态信息写入etcd。

资源清单YAML文件书写技巧

[root@hd1.com ~]# vim pod-tomcat.yaml

apiVersion: v1  #api版本

kind: Pod       #创建的资源

metadata:   

  name: tomcat-test  #Pod的名字

  namespace: default   #Pod所在的名称空间

  labels:

    app:  tomcat     #Pod具有的标签

spec:

  containers:

  - name:  tomcat-java   #Pod里容器的名字

    ports:

    - containerPort: 8080  #容器暴露的端口

    image: tomcat-8.5-jre8:v1  #容器使用的镜像

  imagePullPolicy: IfNotPresent    #镜像拉取策略

常用pod命令

帮助信息

kubectl  expain  资源名称[.字段名]

创建pod

kubectl create -f ymal文件

查看pod

kubectl get pod  [-n 名称空间]

kubectl get pod -o wide

更新pod
kubectl apply -f yaml文件

删除pod
kubectl delete pod pod名称

进入pod中的容器
kubectl exec -it pod名称 shell

查看pod中容器日志
kubectl logs pod名称 -c 容器名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值