Kubernetes相关概念

2018年7月27日16:01:47 发表评论 2,859 ℃

Kubernetes

最小kubernetes集群部署https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/

1、运行

$minikube start

kubectl get nodes 查看节点

kubectl cluster-info 查看集群信息

2、部署应用

$kubectl run kubernetes-bootcamp --image=docker.io/jocatali/kubernetes-bootcamp:v1 --port=8080

 kubectl get pods 查看当前pod

3、访问应用

$kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080 把容器的8080端口映射到节点的端口

 kubectl get services 查看映射端口情况

4、scale增加副本数量 

$kubectl scale deployments/kubernetes-bootcamp --replicas=3

 kubectl get deployments 查看副本数

 kubectl scale deployments/kubernetes-bbotcamp --replicas=2 删除一个副本(保留2个副本)

5、滚动更新

$kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-botcamp:v2 升级到V2版本

 kubectl rollout undo deployments/kubernetes-bootcamp 回退到V1

相关概念

Kubernetes相关概念

cluster :计算、存储和网络资源的集合。

master :是cluster的大脑,负责调度。

node:负责运行容器应用

pod:是kubernetes的最小工作单元,每个pod包含一个或多个容器,pod中的容器会作为一个整体被Master调度到一个Node上运行。

1.可管理性

2.通信和资源共享(所有容器使用一个网络namespace,即相同的IP地址和port空间,可以直接使用localhost通信,k8s挂载volume到pod,本质是将其挂载到pod每一个容器)

controller:管理pod,定义pod的部署特性

 Deployment:最常用的controller,可以管理pod的多个副本

 ReplicaSet:使用Deployment会自动创建replicaSet来管理pod的多个副本不直接使用。

 DaemonSet:用于每个node最多只允许一个pod副本的场景。通常运行daemon

 StatefuleSet:保证pod的每个副本在整个生命周期中名称是不变的,可以保证副本按照固定的顺序启动、更新或删除。

 Job:用于运行结束就删除的应用。

Service:访问容器

Namespace:可以将物理的cluster逻辑上划分成多个虚拟cluster,每个cluster就是一个namespace,资源完全隔离,默认创建2个

 kubectl get namespace 查看namespace


Kubernetes架构

Master节点:

Daemon 服务:kube-apiserver、kube-scheduler、kube-controller-manager、etcd 和 Pod 网络(例如 flannel)。

API Server(kube-apiserver)

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

Scheduler(kube-scheduler)

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

Controller Manager(kube-controller-manager)

Controller Manager 负责管理 Cluster 各种资源,保证资源处于预期的状态。Controller Manager 由多种 controller 组成,包括 replication controller、endpoints controller、namespace controller、serviceaccounts controller 等。

不同的 controller 管理不同的资源。例如 replication controller 管理 Deployment、StatefulSet、DaemonSet 的生命周期,namespace controller 管理 Namespace 资源。

etcd

etcd 负责保存 Kubernetes Cluster 的配置信息和各种资源的状态信息。当数据发生变化时,etcd 会快速地通知 Kubernetes 相关组件。

Pod 网络

Pod 要能够相互通信,Kubernetes Cluster 必须部署 Pod 网络,flannel 是其中一个可选方案。

Node节点

Node上运行的 Kubernetes 组件有 kubelet、kube-proxy 和 Pod 网络(例如 flannel)。

kubelet

kubelet 是 Node 的 agent,当 Scheduler 确定在某个 Node 上运行 Pod 后,会将 Pod 的具体配置信息(image、volume 等)发送给该节点的 kubelet,kubelet 根据这些信息创建和运行容器,并向 Master 报告运行状态。

kube-proxy

service 在逻辑上代表了后端的多个 Pod,外界通过 service 访问 Pod。service 接收到的请求是如何转发到 Pod 的呢?这就是 kube-proxy 要完成的工作。

每个 Node 都会运行 kube-proxy 服务,它负责将访问 service 的 TCP/UPD 数据流转发到后端的容器。如果有多个副本,kube-proxy 会实现负载均衡。

Pod 网络

Pod 要能够相互通信,Kubernetes Cluster 必须部署 Pod 网络,flannel 是其中一个可选方案。

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: