Docker+K8s基础(重要知识点总结)

目录

      • 一、Docker的核心
        • 1,Docker引擎
        • 2,Docker基础命令
        • 3,单个容器运行多个服务进程
        • 4,多个容器运行多个服务进程
        • 5,备份在容器中运行的数据库
        • 6,在宿主机和容器之间共享数据
        • 7,在容器之间共享数据
        • 8,对容器进行数据复制
      • 二、Docker网络
        • 1,查看容器的IP地址
        • 2,将容器端口暴露到主机上
        • 3, 单主机容器间通信
        • 4,多主机容器间通信
        • 5,选择容器网络模式
        • 6,配置守护进程防火墙
        • 7,IP转发设置
      • 三、Kubernetes
        • 1,简称k8s
        • 2,三大核心对象
        • 3,增强功能
        • 4,全新的概念
        • 5,Kubernetes 架构
        • 6,创建一个多节点的Kubernetes集群
        • 7,在Kubernetes集群上启动容器
        • 8,通过标签查询和删除Kubernetes对象
        • 9,管理pod的副本数
        • 10,一个pod中运行多个容器

一、Docker的核心

在这里插入图片描述

1,Docker引擎
  • 定义
    基于单主机运行的守护进程

  • 作用
    创建和管理容器
2,Docker基础命令
docker ps
列出所有运行中的容器docker ps -a
列出所有容器docker run
前端启动运行容器docker run -d
后台启动运行容器docker stop
发送SIGTERM到容器,一定时间内没有停止,则会再送SIGKILL信号docker skill
发送SIGKILL信号到容器docker restart
重启容器docker rm
移除容器docker rm $(docker ps -a -q)
删除所有处于停止中的容器docker build
构建一个新镜像docker images
列出所有的镜像docker rmi
移除镜像
3,单个容器运行多个服务进程

使用Supervisor来监控并运行

Supervisor:用来控制多个进程的普通程序

4,多个容器运行多个服务进程

通过设置 --link 选项将容器连接在一起

5,备份在容器中运行的数据库
  • 方式一 进入容器执行数据库备份命令
  • 方式二 通过设置 -v 选项将宿主机和容器中的卷绑定
6,在宿主机和容器之间共享数据

通过设置 -v 选项将宿主机的卷挂载到容器中

7,在容器之间共享数据

通过设置 -v 选项创建一个称为数据容器的容器

8,对容器进行数据复制

使用 docker cp 命令将文件从正在运行的容器复制到 Docker 主机

二、Docker网络

在这里插入图片描述

1,查看容器的IP地址
  • 方式一
    docker inspect命令并指定一个Go模板格式
docker inspect --format '{{ .NetworkSettings.IPAddress }}' flask
  • 方式二
    docker exec 命令在容器内部执行命令
docker exec -ti flask ip add | grep global
  • 方式三
    查看容器内的 /etc/hosts 文件
docker exec -ti flask cat /etc/hosts | grep flask
  • 方式四
    进入容器中的 shell,输入标准的 Linux 命令
docker exec -ti flask bash || cat /etc/hosts
2,将容器端口暴露到主机上
  • 方式一
    docker run 命令的 -P 选项将容器内的端口动态绑定到宿主机上
docker run -d -p 5000 --name foobar flask
  • 方式二
    创建镜像时,在Dockerfile 中添加 EXPOSE 5000
docker run -d -P flask
3, 单主机容器间通信
  • 单台 Docker 主机网络拓扑图
    在这里插入图片描述
4,多主机容器间通信

多主机环构建一个通用路由封装(Generic Routing Encapsulation,GRE)来对 IPv4 通信进行封装,并为容器之间互连提供基于容器私有地址的路由

  • 两台主机 GRE 隧道覆盖网络图
    在这里插入图片描述
5,选择容器网络模式

docker run 命令的–net 选项

  • 模式一
    主机模式
    实例
docker run -it --rm --net=host ubuntu:14.04 bash
  • 模式二
    无网络模式
    实例
docker run -it --rm --net=none ubuntu:14.04 bash
  • 模式三
    与其他容器共享网络的模式
    实例
docker run -ti --rm --net=container:cocky_galileo ubuntu:14.04 bash
6,配置守护进程防火墙

启动 Docker 守护进程时通过 --ip-forward=false 和 --iptables=false 参数对 Docker的网络进行定制

7,IP转发设置
  1. 启用
echo 1 > /proc/sys/net/ipv4/ip_forward
  1. 禁用
echo 0 > /proc/sys/net/ipv4/ip_forward

三、Kubernetes

在这里插入图片描述

1,简称k8s
  • 定义 它是一个编排系统
  • 编排系统 将一组主机(也称为节点)视为一个统一、可编程、可靠的集群
2,三大核心对象

1.pod
2.service
3.replication controller

3,增强功能
  1. 可靠的容器重启 Kubernetes 可以监视容器的运行状况,并在出现故障时重新启动容器

  2. 自愈 如果一个节点失效了,Kubernetes 会自动将失效节点上的任务重新调度到健康的节点上

动态服务归属机制可以确保这些新启动的容器能被发现并使用

  1. 高集群利用率 通过在一组通用的计算机上调度一组不同类型的工作负载,与静态的手动配置方式相比,用户可以大幅提高计算机的利用率

  2. 组织和分组 Kubernetes 提供了一个灵活的标签(label)系统,让用户和其他系统可以以一组容器为单位来进行处理

Kubernetes 支持命名空间功能,让不同的用户或团队在集群中看到相互隔离的不同视图

  1. 水平扩展和复制 扩展和负载平衡

  2. 微服务友好 应用程序可以被分解成更易于开发、扩展和推导的更小单位。

Kubernetes 提供了服务发现以及与其他服务进行通信的方式

  1. 简化运维 指定应用程序的运维团队(或者开发团队自己)可以专注于应用程序的运行,而不必去具体地管理各个节点
4,全新的概念

1.集群调度
选择一个节点来运行新容器,以优化集群的可靠性和利用率的过程

2.pod
必须将一组容器放置到同一个节点上,像一个团队一样工作

3.标签
添加到 pod 的元数据,用于对容器进行分组以进行监控和管理

4.replication controller
用于确保系统能进行水平扩展的代理(agent),也负责保证对 pod 进行可靠的管理

5.网络服务
一种用于在 pod 之间以及几组 pod 之间进行通信的方式,采用了动态配置的命名和网络代理

5,Kubernetes 架构

#### 5,

1.Kubernetes master 服务 提供了 API 来收集和展现群集的当前状态,并在节点之间分配 pod

2.主节点存储 所有的持久化状态都保存在 etcd 中

3.kubelet 这个代理(agent)运行在每个节点之上,负责控制 Docker,向 master
报告自己的状态,以及配置节点级别的资源(比如远程磁盘存储)

4. proxy 这个代理(proxy)运行于每个节点之上(也能在其他地方运行),为本地容器提供了一个单一的网络接口,以连接到一组 pod

5.Kubernetes service 用于集群内容器之间的通信

用于将外部流量转发到一组 pod

6,创建一个多节点的Kubernetes集群

1.安装 Vagrant和 VirtualBox

2.设置环境变量:KUBERNETES_PROVIDER (该变量表明你将要使用Vagrant)

3.设置环境变量:NUM_MINIONS [该变量用来设置集群中要启动的节点的数量(除master 节点之外的节点数量)]

4.使用由 Kubernetes 社区提供的安装脚本

5.vagrant status 命令可以列出运行中的虚拟机

6. Kubernetes 集群创建成功并可以正常使用

7,在Kubernetes集群上启动容器

1.下载Kubernetes 客户端 kubectl

2.设置集群正确的 API 地址以及相应的身份验证信息

3.创建一个Json/Yaml 格式的 pod 定义文件

4.通过 kubectl 客户端将这个文件提交到 Kubernetes API server

5.当镜像下载完成之后,容器就会开始运行

8,通过标签查询和删除Kubernetes对象
  • 打标签

方式一 使用标签(label)给你的对象(比如 pod)打上标签

实例 修改 pod 的 yaml 元数据描述部分,增加一个 foo=bar 的标签

方式二 通过 kubectl label 命令在运行时进行打标签

实例 kubectl label pods 2048 env=production

  • 通过标签查询Kubernetes对象

通过 kubectl 命令的 --selector 参数列出具有指定标签的所有 pod

实例 kubectl get pods --selector=“foo=bar”

  • 通过标签删除Kubernetes对象

通过指定标签选择器来删除你的 pod

实例 kubectl delete pod --selector=“foo=bar”

9,管理pod的副本数

使用 replication controller为 pod 指定希望的副本数

  • 增加副本数
    使用 kubectl resize

实例

kubectl resize --replicas=4 rc rcgame
10,一个pod中运行多个容器

在安装时通过环境变量进行配置, 即修改Json/Yaml 格式的 pod 定义文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/187294.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSG交互:选中场景模型并高亮显示

1、目的 可以在osg视图中选中指定模型实体,并高亮显示。共分为两种,一种鼠标点选,一种框选。 2、鼠标点选 2.1 功能说明 生成两组对象,一组cow对象可以被选中,另一组robot不能被选中;点击cow对象被选中高亮,点击robot被选中不高亮;点击空白处,弹出“select nothing!…

P6入门:项目初始化2-项目详情之日期Date

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…

STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录

近期在使用STM32H563ZIT6这款芯片在开发板上使用正常,烧录到自己打的板子就遇到了芯片烧录一次后,再次上电无法烧录的问题。 遇到问题需要从以下5点进行分析。 首先看下开发板的原理图 1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家…

远程电脑未连接显示器时分辨率太小的问题处理

背景:单位电脑显示器坏了,使用笔记本通过向日葵远程连接,发现分辨率只有800*600并且不能修改,网上找了好久找到了处理方法这里记录一下,主要用到的是一个虚拟显示器软件usbmmidd_v2 1)下载usbmmidd_v2 2)…

2022年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有n个按名称排序的商品,使用对分查找法搜索任何一商品,最多查找次数为5次,则n的值可能为?()(2分) A.5 B.15 C.30 D.35 答案:C 答案解析:对分查找最多查找次数m与个数之间n的…

【星海随笔】SDN neutron (一)

一、SDN的原理: 控制平面与数据平面分离:传统网络中,网络设备同时承担控制和数据转发功能,而SDN将这两个功能分离,使得网络控制集中在一个中心控制器上。 中心控制器:SDN架构中的中心控制器负责网络的全局…

一个“Hello, World”Flask应用程序

如果您访问Flask网站,会看到一个非常简单的示例应用程序,只有5行代码。为了不重复那个简单的示例,我将向您展示一个稍微复杂一些的示例,它将为您编写大型应用程序提供一个良好的基础结构。 应用程序将存在于包中。在Python中&…

aosp定制android系统

目录 AOSP 准备工作(配置) 确定机型和版本 初始化 git安装 curl安装 同步源码 环境变量 创建aosp目录 指定同步版本 解下来安装编译需要的依赖 编译aosp源码 刷入系统 AOSP 全称 Android Open Source Project 是指Android开源项目,它是由Google主导的…

gird 卡片布局

场景一:单元格大小相等 这承载了所有 CSS Grid 中最著名的片段,也是有史以来最伟大的 CSS 技巧之一: 等宽网格响应式卡片实现 .section-content {display: grid;grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));gap: 10px; …

list部分接口模拟实现(c++)

List list简介list基本框架list构造函数list_node结构体的默认构造list类的默认构造 push_back()iteartor迭代器迭代器里面的其他接口const迭代器通过模板参数实现复用operator->() insert()erase()clear()析构函数迭代器区间构造拷贝构造operator() list简介 - list可以在…

使用 pubsub-js 进行消息发布订阅

npm 包地址 github 包地址 pubsub-js 是一个轻量级的 JavaScript 基于主题的消息订阅发布库 ,压缩后小于1b。它具有使用简单、性能高效、支持多平台等优点,可以很好地满足各种需求。 功能特点: 无依赖同步解耦ES3 兼容。pubsub-js 能够在…

Angular 由一个bug说起之一:List / Grid的性能问题

在angular中,MatTable构建简单,使用范围广。但某些时候会出现卡顿 卡顿情景: 1:一次性请求太多的数据 2:一次性渲染太多数据,这会花费CPU很多时间 3:行内嵌套复杂的元素 4:使用过多的…

11月份 四川汽车托运报价已经上线

中国人不骗中国人!! 国庆小长假的高峰期过后 放假综合症的你还没痊愈吧 今天给大家整理了9条最新线路 广州到四川的托运单价便宜到💥 核算下来不过几毛钱💰 相比起自驾的漫长和疲惫🚗 托运不得不说真的很省事 - 赠送保险 很多客户第一次运车 …

LeetCode 17. 电话号码的字母组合 中等

题目 - 点击直达 1. 17. 电话号码的字母组合 中等1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 3. 知识与收获 1. 17. 电话号码的字母组合 中等 1. 题目详情 1. 原题链接 LeetCode 17. 电话号码的字母组合 中等 2. 题目要…

unity line renderer绘制的颜色不是想要的红色

线条不是暗红色的,用的是默认的红色 将材质选则为如下即可

C# OpenCvSharp DNN HybridNets 同时处理车辆检测、可驾驶区域分割、车道线分割

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Numerics; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_D…

Python使用腾讯云SDK实现对象存储(上传文件、创建桶)

文章目录 1. 开通服务2. 创建存储桶3. 手动上传文件并查看4. python上传文件4.1 找到sdk文档4.2 初始化代码4.3 region获取4.4 secret_id和secret_key获取4.5 上传对象代码4.6 python实现上传文件 5 python创建桶 首先来到腾讯云官网 https://cloud.tencent.com/1. 开通服务 来…

vue项目pdf文件的预览

1.下载 您可以在以下网址下载pdfjsLib&#xff1a;https://github.com/mozilla/pdf.js pdfjsLib是一个开源项目&#xff0c;您可以在GitHub上找到其源代码和相关资源。 2.放置文件位置 3.进入 在index.html引入 <script src"<% BASE_URL %>static/pdfjs-dist/b…

C/C++输出硬币翻转 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C硬币翻转 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C硬币翻转 2021年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 假设有N个硬币(N为不大于5000的正整数)&#xff0c;从1…

ChatGPT 宕机?OpenAI 将中断归咎于 DDoS 攻击

您的 ChatGPT 已关闭吗&#xff1f;您是否遇到 ChatGPT 问题&#xff0c;例如连接问题或遇到“长响应时出现网络错误”&#xff1f;– ChatGPT 遭受了一系列 DDoS 攻击&#xff0c;显然是由匿名苏丹组织策划的。 OpenAI 的 ChatGPT 是一款流行的人工智能聊天机器人&#xff0c;…