码迷,mamicode.com
首页 > 其他好文 > 详细

K8S in Action

时间:2019-10-02 20:56:29      阅读:102      评论:0      收藏:0      [点我收藏+]

标签: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 好处:
简化应用部署
更好的利用硬件
健康检查和自我修复
自动扩容

第二章 开始使用k8s 和docker

镜像是如何构建的:
将整个目录的文件上传到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

一个 pod 中的所有容器都在相同的 network 和 UTS 命名空间下运行,所以它们都共享相同的主机名和网络接口
这些容器也都在相同的 IPC 命名空间下运行, 因此能够通过 IPC 进行通

默认情况下, 每个容器的文件系统与其他容器完全隔离。 但我们可以使用名为 Volume 的 Kubernetes 资源来共享文件目录

容器如何共享相同的IP和端口空间

由于一个 pod 中的容器运行于相同的 Network 命名空间,因此它们共享相同的 IP 地址和端口空间

在同一 pod 中的容器运行的多个进程需要注意不能绑定到相同的端口号, 否则会导致端口冲突,但这只涉及同
-pod 中的容器

由千每个 pod 都有独立的端口空间, 对于不同 pod 中的容器来说则永远不会遇到端口冲突

平坦pod间网络
技术图片

K8S in Action

标签:ESS   ubi   服务器   第一章   完全   端口冲突   file   生命周期   组件   

原文地址:https://www.cnblogs.com/g2thend/p/11509403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!