zoukankan      html  css  js  c++  java
  • Docker & K8S 01

    Dockerfile: 配置文件, 可以 build 一个镜像.

    tar 文件: 类似虚拟机存储在磁盘上的文件. (这样就可以转存这个tar 从而实现镜像的 copy)

    仓库: 远程仓库, 可以下载带环境变量的 docker, 比如带 nginx 

    比如我用 play with docker 玩的下载 docker pull nginx

    docker images 查看有哪些镜像

    然后我们可以通过 run 命令来运行这个镜像, 使它编程一个容器.

    docker run -d -p 80:80 nginx

    -d 表示后台运行, 不会阻塞shell. -p 表示端口映射, 外部端口(){操作系统的端口}和内部端口(){容器内的端口, 运行时}的一个映射.

    docker ps 可以查看正在运行的容器 

    Docker 运行原理

    Docker 是一个 Client-Server 结构的系统, Docker 守护进程运行在主机上, 然后通过Socket连接客户端访问, 守护进程从客户端接受命令并管理运行在主机上的容器. 容器:是一个运行时环境,就是我们前面说到的集装箱.

     Docker 的架构

    所以: Docker 就是 PaaS 的运行标准. docker 是纯软件层面的, 不需要考虑操作系统和硬件, 所以非常快.

    Docker 版本:

    docker-CE:社区版(免费)

    docker-EE: 企业版(收费)

    Docker 的问题

    • 单机使用, 无法有效集群
    • 随着容器数量的上升,管理成本攀升
    • 没有有效的容灾/自愈机制
    • 没有预设编排模板, 无法实现快速,大规模容器调度
    • 没有统一的配置管理中心工具
    • 没有容器生命周期的管理工具
    • 没有图形化运维管理工具

    容器编排工具 (慢慢 凉凉了)

    docker compose, docker swarm

    Mesosphere + Marathon (2015)

    K8S Kubernetes

    我们真的需要集群吗? 貌似没到这个规模啊...

    K8S 解决容器的集群化的问题。 实际上, 各个服务厂商有自己的 Kubernetes, 但是基本上也都是兼容的.

    所以, 理解是应该是 Infra team 来关注 K8S, 来管理 docker.

    搭配比较繁琐

    服务器硬件 -> 操作系统ubuntu -> K8S 容器 -> dockers (多个容器)... 这种多台服务器组成的,就是 K8S 集群

    组件说明

    K8S 来源于 Borg 系统(Google 运行了10多年了)

    高可用集群, BorgMaster 最好是基数. 3.5.7 等.

     

    K8S 也是采用 HTTP 的 restful API.

    kubectl: K8S 的命令行界面

    apiserver: 所有服务访问的统一入口

    ccontrollerManager(replication controller): 维护副本的期望数, 推荐使用 RelicaSet 来替换 replication controller.

    scheduler: 负责接受任务,选择合适的节点分配任务.

    etcd: key,value 数据库. (自己天生集群化), 本地持久化, 最新版的 k8s 是 v3 版本的 etcd.

    kubelet: CRI container runtime interface, 与 container 交互, container生命周期管理.

    kube proxy: 负责写入规则到 IPTABLES, IPVS 实现服务映射访问的, 负载均衡.

    以上是主要组件, 除此之外, 还有一些插件:

    CoreDNS: 可以为集群中的 SVC 创建一个域名IP的对应关系解析.

    Dashboard: B/S 接口, 给K8S 一个访问,可视化.

    Ingress Controller: 可以实现 7 层代理.

    Federation: 可以跨集群中心多 K8S 统一管理

    Prometheus: 提供 K8S 集群的监控

    ELK: 提供 K8S 日志分析接入平台.

    K8S 网络通信: 假定所有的 Pod 都在一个直接连通的网络空间中, 可以通过IP直接到达.

    同一个Pod 内的容器之间: IO

    各个 Pod 之间的通讯: Overlay Network

    Pod 与 service 之间的通讯: 各个节点的 iptables / IPVS.

    微服务架构2.0: Istio (依赖于 Kubernetes) 方向

    官网: https://kubernetes.io

    GitHub: https://github.com/kubernetes/kubernetes

    K8S 版本要注意选择.

    K8S 优势

    • 自动装箱,水平扩展,自我修复(自愈)
    • 服务发现和负载均衡
    • 自动发布(默认滚动发布模式)和回滚
    • 集中化配置管理和密钥管理
    • 存储编排, 支持外挂存储
    • 任务批处理运行
  • 相关阅读:
    如何快速给pod添加健康检查?
    如何快速下载vagrant的box?
    如何快速新建sql的demo环境?
    如何快速将某个用户添加sudo免密以及docker权限?
    七、Docker+nginx
    六、Docker+Gitlab
    五、Docker+Sqlserver
    四、Docker+Tomcat
    Docker 内程序时间设置,很重要
    三、Docker镜像的相关操作
  • 原文地址:https://www.cnblogs.com/moveofgod/p/12561907.html
Copyright © 2011-2022 走看看