Download presentation
Presentation is loading. Please wait.
1
沈扬华 上海大学开源社区技术分享 2018春季第八周
Kubernetes 入门 沈扬华 上海大学开源社区技术分享 2018春季第八周
2
https://zh.wikipedia.org/zh-hans/Kubernetes
Google 集群管理工具:Borg Kubernetes (简称 "K8S")是由 Google 设计并捐赠给 Cloud Native Computing Foundation (CNCF) 的开源容器编排系统,旨在提供一个跨 集群的自动部署、扩展以及管理容器化应用的平台。
6
Kubernetes 能做什么 容器自动化部署和升级 容器自动伸缩 容器自动修复与检查 SHUHelper、鸭子拔电源线……
7
Kubernetes 概念 K8S Object - K8S 用对象表示集群的整体的状态,对象也是用户通 过 API 操作的目标。
Pod – K8S 中最基本的调度单元,由一个或多个容器组成,使用 Pod 有以下优势: 作为容器的抽象,并不依赖 Docker(CRI),设计上为 Service Mesh 做好了准备。 这些 Pod 中的容器共享一个网络栈与存储 – localhost 通信 Controllers –负责创建与管理基本对象(如 pod)的对象 Deployment – 最常用的 controller 对象, 管理多个 Pod 的副本,确 保 Pod 以期望状态进行(自动部署、滚动升级、弹性伸缩等功能) Initializer: 答案还是借助 Kubernetes。Kubernetes 中有一个叫 Initializer 的扩展机制,允许用户在不修改业务 Pod 部署描述前提下,请求 Kubernetes 为业务 Pod“自动注入”并启动一个预先定义号的容器。在 Istio 里,这个自动注入的容器正是前面不断提到的 proxy:Envoy(Lyft 自研的高性能服务代理)。
8
Kubernetes 概念 其他 Controller 对象– ReplicaSet、DaemonSet、StatefulSet 、 Job、CronJob Service – Pod 在集群中的位置一直在迁移变化,而 Service 为一 组相同功能的 Pod 提供统一入口。 Label – 可以通过 Label 给各种资源对象(Pod) 打上标签,Service 就可以用 Selector 来发现符合需求的 Pod Ingress – 外部请求访问 K8S 集群的入口 Namespace – K8S 的命名空间,不同命名空间的资源对象互相是 隔离的。 Deployment 与 ReplicaSets: Deployment 可以通过声明式配置来更新 pods,功能更强大
9
Kubernetes 概念
10
Kubernetes 架构
11
Kubernetes 架构 Master 节点 – 控制节点,负责管理集群符合目标状态
etcd : K8S 采用的分布式存储方案,高可用的键值对持续存储,所有 K8S 集群数据都存储在 etcd 中(可单独配置集群) kube-apiserver : 集群管理的 API 接口。 用户(kubectl) 以及其他组件都通过 API 通信与操作; API Server 同时负责处理集群的身份验证与权限划分; 与 K8S 存储后端(etcd) 的交互都由 API Server 负责 kube-controller-manager: 负责运行 controller 的组件 (A controller is a control loop that watches the shared state of the cluster through the apiserver and makes changes attempting to move the current state towards the desired state) scheduler : 负责创建 pod 时,选择合适的 node 进行调度 Kube-controller-manager:pod replica 发生变化时,维持正确副本数 监听 node 是否异常;负责 Service 与 pods 之间的发现
12
Kubernetes 架构 Node 节点 – 实际运行容器化应用的节点
kubelet – 每个 node 都会运行的组件,负责实际管理自己所属 node 中 pod 的生命周期(创建、销毁、监控),同时负责与 node 相关的存储卷挂载、容器日志记录、垃圾回收等重要的操 作 kube-proxy – 运行在每个 node 上,通过 API 监听 Service 的 变化,并利用 iptables/ipvs 来实现网络的转发
13
Kubernetes 部署 源码部署(配证书、存储、网络,操作比较复杂) Kubeadm 官方推荐自动化部署工具(k8s-deploy …)
RKE 部署,Rancher 开发的快速部署工具
14
Kubernetes 基本操作 kubectl cluster-info kubectl get cs
kubectl get <object> (--all-namespaces --namespace=xxx -o wide) kubectl describe <object> <object-name> kubectl delete <object> <object-name> kubectl apply -f <filename> kubectl describe node hostname kubectl label node node-1 disktype=ssd kubectl get node --show-labels
15
Kubernetes 基本操作 kubectl run kubernetes-bootcamp -- image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080 kubectl expose deployment/kubernetes-bootcamp --type="NodePort" -- port=8080 kubectl scale deployment/kubernetes-bootcamp --replicas=3 kubectl scale deployment/kubernetes-bootcamp --replicas=2 kubectl set image deployment/kubernetes-bootcamp kubernetes- bootcamp=jocatalin/kubernetes- bootcamp:v2 (一般是写好 yaml 文件后直接 apply)
16
Kubernetes + Ceph 架构
17
Kubernetes + Ceph 架构
18
Kubernetes 学习资料 Kubernetes Documentation: Kubernetes Handbook: KubeCon 2018
19
Kubernetes 延伸
20
Thanks for your attention!
Atrial fibrillation
Similar presentations