前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1. 死磕 k8s系列之核心概念介绍

1. 死磕 k8s系列之核心概念介绍

作者头像
彤哥
发布2020-02-10 11:24:43
7950
发布2020-02-10 11:24:43
举报
文章被收录于专栏:彤哥读源码

docker入门

核心概念

  • 镜像

类似于虚拟机镜像,可以理解为一个面向Dokcer引擎的只读模板,包含了文件系统。

  • 容器

类似于轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,但是所有的容器是相互隔离的,互不可见的,这就提供了一个实体机可以安装多个容器,且很轻量级相对于虚拟机。

镜像本身是只读的,容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身保持不变。

  • 仓库

类似于代码库,是Dokcer集中存放镜像的场所。

根据存储的镜像公开分享与否,Docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。

常用命令

代码语言:javascript
复制
# 镜像列表
docker images
# 移除镜像
docker rmi <image_id>
# 查看镜像
docker search <image_name>
# 拉取镜像
docker pull <image_name>[:tag]
# 运行一个镜像到容器
docker run [OPTIONS] <image_name>[:tag]
# 所有容器
docker ps -a
# 移除一个容器
docker rm <container_id>
# 提交一个容器到镜像
docker commit <container_id> [image_name:tag]
# 推送镜像到仓库
docker push <image_name>[:tag]

k8s入门

核心概念

master,又称为master节点、集群控制面板、控制面板等,它的作用是治理Worker Node。一般来说,master上面不运行任何pod。

Worker Node,又称为worker节点、node节点等,node是机器的抽象,物理机或虚拟机。一般来说,所有的pod都运行在node上。

蓝色部分代表高层抽象,绿色部分代表node层及其子进程。

master包含api server、etcd、scheduler、kube-controller-manager、cloud-controller-manager。

api server,暴露 K8s API,是 K8s 控制的前端,即 kube-apiserver。

etcd,用于集群状态数据的分布式键值存储。

scheduler,调度器,为新 Pod 选择 Node,即 kube-scheduler,可以想象成匹配器

kube-controller-manager,运行控制器来处理集群后台任务的进程,可当做集群控制器。

cloud-controller-manager,运行控制器与云供应商交互,可以当做云接口。

Worker Node 的组件包括 kubelet、kube-proxy 及 container runtime。

kubelet,负责 Worker Node 的一切事务,与 Master 的 API server 通信。

kube-proxy,连接正确 Pod 的路由,也扮演跨 Pod 服务负载均衡的角色。

Container Runtime,容器运行时,下载镜像,运行容器,例如:Docker 就是一个容器运行时。

Deployment,部署,无状态,如果你想持续运行一个无状态的应用,那就用Deployment。Deployment 允许你在无需停机的状态下更新应用,并在 Pod 宕掉时根据策略重启 Pod。

ReplicaSet,无状态,Deployment 会创建 ReplicaSet 来保障你的应用所需 Pod 的数量,ReplicaSet 会基于 Deployment 中的触发器自动创建及伸缩 Pod 数量。老版本中有个名词“Replication Controller”,与ReplicaSet的概念等价。

Pod,是 K8s 的基础构建模块,一个 Pod 包含一组一个或多个容器。通常每个 Pod 包含一个容器。当应用需要水平扩展时,ReplicationSet 会复制 Pod。

StatefulSet,有状态,与 Deployment 不同,StatefulSet 的 Pod 是不可互换的。每个 Pod 都有一个唯一的、持久的标识符,在任何重新调度期间,控制器都要维护这个标识符。StatefulSet 用于持久的、有状态的后端,如数据库。

DaemonSet,用于处理连续的过程,在每个 Node 上运行一个 Pod,每个自动被放入集群的 Node 会通过 DaemonSet 启动 Pod。DaemonSet 对后台运行的任务(如监控和日志收集)非常有用。

StatefulSet 和 DaemonSet 不受 Deployment 控制,虽然两者与 ReplicaSet 位于同级别的抽象层,在当前 API 中没有针对它们更高层级的抽象层了。

PV,PersistentVolumes,持久化卷,与具体的存储关联,可以是本地磁盘,也可以是远程存储设置;

PVC,PersistentVolumeClaims,持久化卷清单,使用PV,Pod只能使用PVC,不与PV直接关联。

Service,Pod的访问入口,有三种类型ClusterIP、NodePort、LoadBalance。

代码语言:javascript
复制
ClusterIP,使用一个集群固定IP,这个是默认选项。
NodePort,使用一个集群固定IP,但是额外在每个pod上均暴露一个端口供外部访问
LoadBalancer,使用集群固定IP,额外还会申请一个负载均衡器来转发到服务(load balancer )

Ingress,通常情况下,service和Pod的IP仅可在集群内部访问。集群外部的请求需要通过负载均衡转发到service在Node上暴露的NodePort上,然后再由kube-proxy将其转发给相关的Pod。

Ingress可以给service提供集群外部访问的URL、负载均衡、SSL终止、HTTP路由等。为了配置这些Ingress规则,集群管理员需要部署一个Ingress controller,它监听Ingress和service的变化,并根据规则配置负载均衡并提供访问入口。常用的Ingress Controller有nginx-ingress和traefik-ingress。

常用命令

代码语言:javascript
复制
# 通过文件名或控制台输入,对资源进行创建。
kubectl create
#通过文件名或控制台输入,对资源进行替换。
kubectl replace
# 通过文件名或控制台输入,对资源进行配置,kubectl apply = kubectl create + kubectl replace。
kubectl apply
# 集群信息
kubectl cluster-info
# 查看组件信息
kubectl get
# 修改组件配置
kubectl edit
# 显示组件详情
kubectl describe
# 删除组件
kubectl delete 
# 查看日志
kubectl logs

istio入门

核心概念

Envoy,一个 C++ 编写的高性能代理服务器,这里做了扩展,在 Istio 中会以 Sidecar 方式跟应用运行在同一 Pod 内,一方面可以接收并执行关于规则、流量拆分等方面的指令,另一方面能够产生各种指标用于监控和跟踪。

Mixer,主要进行访问控制以及策略控制,同时也负责从 Envoy 中获取各项指标。

Pilot,是用户和 Isito 之间的桥梁,负责接收各种配置,并发送给各个组件。

Istio Auth,内置认证和凭证管理,利用 TLS 提供服务之间、用户和服务之间的认证。可以用来将没有加密支持的服务升级为加密版本,并且在网络策略之外,提供服务级别的策略控制,今后还会增加更多的鉴权和审计方面的能力。

常用命令

代码语言:javascript
复制
# 将某个命名空间置为自动注入istio proxy
kubectl label namespace docker-test istio-injection=enabled
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 彤哥读源码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker入门
    • 核心概念
      • 常用命令
      • k8s入门
        • 核心概念
          • 常用命令
          • istio入门
            • 核心概念
              • 常用命令
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档