标签:ESS ubi 服务器 第一章 完全 端口冲突 file 生命周期 组件
1,容器的概念
镜像
镜像仓库
容器
镜像层:Docker镜像由多层构成。好处:网络分发效率,减少镜像的存储空间
1.2 k8s
主节点 ,它承载着 Kubernetes 控制和管理整个集群系统的控制面板
工作节点,它们运行用户实际部署的应用
控制面板
用于控制集群并使它工作,包括:
Kubernetes API 服务器,你和其他控制面板组件都要和它通信
Scheculer ,它调度你的应用
Controller Manager,它执行 群级别的功能,如复制组件、持续跟踪工作节点处理节点失败
etcd ,一个可靠的分布式数据存储,它能持久化存储集群配置
工作节点
是运行容器化应用的机器;
Docker 、rkt或其他的容器类型
Kubelet ,它与 API 服务器通信,并管理它所在节点的容器
Kubernetes Service Proxy (kube proxy ,它负责组件之间的负载均衡网络流量
linux 容器技术特点:
容器隔离
开销小
进程仍运行在宿主机操作系统,但与其他进程隔离,共用系统内核
轻量
容器隔离机制:
第一个是 Linux 命名空间,它使每个进程只看到它自;
第二个是Linux 控制组 (cgroups),它限制了进程能使用的资源量 (CPU、 内存、 网络带宽等)己的系统视图(文件、进程、网络接口、主机名等);
以下命名空间:
Mount Cmnt)
Process ID (pid)
Network (net)
Inter-process communicaion (ipd)
UTS
User ID (user)
限制资源:
cgroups 是一个 Linux 内核功能, 它被用来限制一个进程或者一组进程的资源使用。
一个进程的资源(CPU、 内存、 网络带宽等)使用量不能超出被分配的量
k8s 集群架构
主节点:承载 着Kubernetes 控制和管理整个集群系统的控制面板
工作节点:运行用户实际部署的应用
主节点控制面板作用:
? Kubernetes API 服务器,你和其他控制面板组件都要和它通信
? Scheculer ,它调度你的应用(为应用的每个可部署组件分配一个工作节点〕
? Controller Manager,它执行集群级别的功能,如复制组件、持续跟踪工作节点处理节点失败
? etcd ,一个可靠的分布式数据存储,它能持久化存储集群配置
工作节点:
docker rtk 等其他容器类型
Kubelet ,它与 API 服务器通信,并管理它所在节点的容器
Kubernetes Service Proxy (kube proxy ,它负责组件之间的负载均衡网络流量
k8s 好处:
简化应用部署
更好的利用硬件
健康检查和自我修复
自动扩容
镜像是如何构建的:
将整个目录的文件上传到Docker守护进程并在那里进行的,
Docker客户端和守护进程不要求在同一 台机器上
镜像分层:
构建镜像时,Dockerfile 中每一条单独的指令都会创建一个新层
k8s 集群:
kubectl 命令行客户端向运行在主节点上的 Kubemetes API 服务器发出 REST 请求以与集群交互
kubectl 设置补全
vim ~/.bashrc
alias k=kubectl
$ kubectl desc<tab> no<tab> gke-ku<tab>
安装bashcompletion 包
pod:
通常一个pod 内包含任意数量的容器。容器内部的进程绑定到指定的端口
pod 有自己独立的私有 IP地址和主机名。
ReplicationController:
用于复制 pod (即创建 pod 的多个副本)并让它们保持运行,如果pod 消失,RC 将创建新的pod
服务:
pod 的存在是短暂的, 一个 pod 可能会在任何时候消失,或许因为它所在节点发生故障, 或许因为有人删除了 pod, 或者因为 pod 被从 一
个健康的节点剔除了。
当其中任何一种情况发生时, 如前所述, 消失的 pod 将被Replication Con tro I !er 替换为新的 pod。
新的 pod 与替换它的 pod 具有不同的 IP地址。服务解决不断变化的pod ip ,以及在一个固定的IP 和端口对上对外暴露多个 pod
当一个服务被创建时, 它会得到一个静态的 IP, 在服务的生命周期中这个 IP不会发生改变。 客户端应该通过固定 IP地址连接到服务, 而不是直接连接 pod
服务表示一组或多组提供相同服务的 pod 的静态地址。 到达服务 IP 和端口的请求将被转发到属于该服务的一个容器的 IP 和端口。
水平伸缩:
水平增加运行实例数
kubectl get replicationcontrollers
增加期望的副本数:
$ kubectl scale rc kubia --replicas=3
kubectl get rc 看副本数
kubectl get pods 查看pod 数
查看pod 运行在哪个节点
kubectl get pods -o wide
一个 pod 中的所有容器都在相同的 network 和 UTS 命名空间下运行,所以它们都共享相同的主机名和网络接口
这些容器也都在相同的 IPC 命名空间下运行, 因此能够通过 IPC 进行通
默认情况下, 每个容器的文件系统与其他容器完全隔离。 但我们可以使用名为 Volume 的 Kubernetes 资源来共享文件目录
容器如何共享相同的IP和端口空间
由于一个 pod 中的容器运行于相同的 Network 命名空间,因此它们共享相同的 IP 地址和端口空间
在同一 pod 中的容器运行的多个进程需要注意不能绑定到相同的端口号, 否则会导致端口冲突,但这只涉及同
-pod 中的容器
由千每个 pod 都有独立的端口空间, 对于不同 pod 中的容器来说则永远不会遇到端口冲突
平坦pod间网络
标签:ESS ubi 服务器 第一章 完全 端口冲突 file 生命周期 组件
原文地址:https://www.cnblogs.com/g2thend/p/11509403.html