
容器
文章平均质量分 64
云程序员
“指点江山”的云程序员
展开
-
使用k3s搭建集群
因为某些原因,手里有3台云服务器,由于想学习k8s,但是手里的服务器有两台是1c2g的服务器,无法搭建k8s集群,所以在此使用k3s搭建集群进行学习。安装K3s集群服务器配置hostnameIP配置chensy-master阿里云1c/2gchensy-node1腾讯云1c/2gchensy-node2西部数码8c/12g在此之前,每台主机应该安装了docker修改主机名称hostnamectl set-hostname chensy-mas原创 2021-08-15 17:19:31 · 1136 阅读 · 0 评论 -
[从零开始学Kubernetes] 12. 给后端程序加上自动伸缩
在文章《[从零开始学Kubernetes] 11.使用K8s部署一个后端程序》中使用了K8s部署了一个4个副本的后端程序,现在来给后端程序增加一个自动伸缩修改原yaml文件修改原yaml文件,限制单个deployment的cpu和内存均为256Mivi container_deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: container-deployment namespace: test labe原创 2020-12-23 10:41:54 · 207 阅读 · 0 评论 -
[从零开始学Kubernetes] 11.使用K8s部署一个后端程序
在学习了那么多k8s的知识之后,搭建一个后端系统进行复习需求: 搭建一个基于PV的单mysql的Pod和可访问的后端系统注:这里不搭建Mysql集群Mysql搭建1. Namespace创建使用命令kubectl create namespace test[root@kubernetes container]# kubectl create namespace testnamespace/test created2. 编写Mysql-PV/Mysql-PVC的Yaml文件使用命令vi原创 2020-12-21 20:05:11 · 466 阅读 · 0 评论 -
[从零开始学Kubernetes] 10.Kubernetes的DaemonSet
在使用Kubernetes的时候,有些场景,比如监控各个节点的状态,使用 Deployment 或者 StatefulSet 都无法满足我们的需求,因为这个时候我们可能会有以下这些需求。希望每个节点上都可以运行一个副本,且只运行一个副本。虽然通过调整 spec.replicas 的数值,可以使之等于节点数目,再配合一些调度策略(我们后面讲调度原理的时候会深入解释)可以实现这一点。但是如果节点数目发生了变化呢?希望在新节点上也快速拉起副本。比如集群扩容,这个时候会有一些新节点加入进来,如何立即感知原创 2020-12-20 13:36:45 · 182 阅读 · 0 评论 -
[从零开始学Kubernetes] 9.Kubernetes中的Service
Service是K8s中的服务发现机制,其匹配Pod的方式也是通过与 Deployment、StatefulSet 这些一致的标签选择器进行匹配。下面来看看一个Service的具体定义Service服务定义创建nginx_service.yamlapiVersion: v1kind: Servicemetadata: name: nginx-prod-svc-demo namespace: demo # service 是 namespace 级别的对象spec: select原创 2020-12-19 22:27:59 · 176 阅读 · 0 评论 -
[从零开始学Kubernetes] 8.Kubernetes存储类型以及持久化存储
在Kubernetes中,使用Volume提供容器的共享存储,但是与Docker设计不同的是,Volume的生命周期与Pod一致,即:Pod在Volume就在,Pod被删除,Volume根据其类型决定删不删数据。Volume Plugins插件分类主要用途卷插件数据是否会随Pod删除而删除临时存储主要用于存储一些临时文件,类似于在操作系统中创建的tempDirEmptyDir是本地存储用于将一些K8s中定义的配置通过Volume映射到容器中使用ConfigMap/原创 2020-12-17 14:39:19 · 296 阅读 · 0 评论 -
[从零开始学Kubernetes] 7.创建应用配置(ConfigMap、Secret)
在Kubernetes中,有ConfigMap和Secret两种对象来做配置管理。ConfigMap首先我们来讲一下 ConfigMap 这个对象,它主要用来保存一些非敏感数据,可以用作环境变量、命令行参数或者挂载到存储卷中。ConfigMap 通过键值对来存储信息,是个 namespace 级别的资源。在 kubectl 使用时,我们可以简写成 cm。例子创建study_cm_demo_mix.yamlapiVersion: v1kind: ConfigMapmetadata: na原创 2020-12-17 14:22:09 · 202 阅读 · 0 评论 -
[从零开始学Kubernetes] 6.创建有状态应用(StatefulSet)
创建有状态应用即将Pod设置固定的、确切的主机名。同时,对Pod进行扩容或缩容时按照一定的顺序进行,每个Pod的域名在变化中没有发生改变,仅仅是IP地址发生了变换。这一切都得靠StatefulSet选择器进行配置。Kubernetest Service简介部署有状态的应用的前置依赖对象: Service(服务)。在Kubernetes 中的 Service(服务) 提供了一个抽象层,它选择具备某些特征的 Pod(容器组)并为它们定义一个访问方式。Service(服务)使 Pod(容器组)之间的相互依赖解原创 2020-12-17 11:16:02 · 429 阅读 · 0 评论 -
[从零开始学Kubernetes] 5.Kubernetes的Deployment控制器
Deployment简介deployment 是用来管理无状态应用的,面向的集群的管理,而不是面向的是一个不可变的个体,举例:有一群鸭子,要吃掉一个,只需要再放一个新的鸭子就好了,不会影响什么,而有状态的应用,就同时养三条狗一样,而每个狗都是无法代替用新的事物代替的,因为有“感情”这个状态在里面。Deployment 为Pod 和 ReplicaSet 之上,提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController 来方便的管理应用。你只需要在 De原创 2020-12-17 10:03:53 · 127 阅读 · 0 评论 -
[从零开始学Kubernetes] 4.Kubectl操作命令
kubectl是用于运行Kubernetes集群命令的管理工具,所以记录一下Kubectl的操作命令命令表: http://docs.kubernetes.org.cn/683.html转载 2020-12-16 11:25:04 · 91 阅读 · 0 评论 -
[从零开始学Kubernetes] 3.Pod-Kubernetes最小调度单元
Pod是K8s中的最小调度单元。可以在一个Pod里部署多个容器。同个Pod中共享网络资源、存储资源以及命名空间等。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。从《从零开始学容器》中我们知道,一个容器类似于一个进程,那么容器就不能像使用Vm一样使用。所以,Pod对于容器的编排起着重要作用。Pod的特点网络:每一个Pod都会被指派一个唯一的Ip地址,在Pod中的每一个容器共享网络命名空间,包括Ip地址和网络原创 2020-12-16 11:14:26 · 798 阅读 · 0 评论 -
[从零开始学Kubernetes] 2. 安装Kubernetes单Master节点集群
网上安装K8s文档太多,一时分不清孰好孰坏。经测试,该文档可行链接: https://kuboard.cn/install/install-k8s.html转载 2020-12-15 10:50:13 · 137 阅读 · 0 评论 -
[从零开始学Kubernetes] 1.为什么还需要Kubernetes
在“《从零开始学容器》12.使用Docker Swarm编排容器”使用Docker Swarm编排了容器,并且实现了多副本容器的部署,那么为什么还要使用Kubernetes这种庞大的部署编排工具?Kubernetes的出现原创 2020-12-14 17:19:23 · 360 阅读 · 2 评论 -
[从零开始学容器] 12.使用Docker Swarm编排容器
上一章使用了Docker Compose编排单机多容器的Docker。但是当规模越来越大时,容器规模也会逐渐增大。所以,这章来使用Docker官方为了解决多容器管理的问题推出的Docker SwarmDocker Swarm与K8s的比较与选择参考链接Docker Swarm架构Swarm 的架构整体分为管理节点(Manager Nodes)和工作节点(Worker Nodes),整体架构如下图:管理节点: 管理节点负责接受用户的请求,用户的请求中包含用户定义的容器运行状态描述,然后 Swa原创 2020-12-14 13:56:54 · 401 阅读 · 1 评论 -
[从零开始学容器] 11.Docker Compose的简单使用
Docker Compose的前世今生Docker Compose 的前身是 Orchard 公司开发的 Fig,2014 年 Docker 收购了 Orchard 公司,然后将 Fig 重命名为 Docker Compose。现阶段 Docker Compose 是 Docker 官方的单机多容器管理系统,它本质是一个 Python 脚本,它通过解析用户编写的 yaml 文件,调用 Docker API 实现动态的创建和管理多个容器。Linux Docker Compose安装要在 Linux 平台原创 2020-12-11 16:39:06 · 152 阅读 · 0 评论 -
[从零开始学容器] 10.Docker的数据存储
容器通常存在时间较短,但是有一些数据是需要一直保存的,所以需要将容器内的数据进行保存。这里介绍容器的卷,相当于给容器插入磁盘。Docker 提供了卷(Volume)的功能,使用docker volume命令可以实现对卷的创建、查看和删除等操作Docker卷的操作命令说明volume create创建卷,如docker volume create myvolumevolume ls列出卷volume rm删除卷volume inspect查看卷详细信息原创 2020-12-11 14:51:38 · 151 阅读 · 0 评论 -
[从零开始学容器] 9.Docker的各个组件
Docker所有组件: docker、dockerd、docker-init 、docker-proxy、containerd、containerd-shim 、ctr、runc按工作职责划分Docker相关的组件:docker、dockerd、docker-init 和 docker-proxycontainerd 相关的组件:containerd、containerd-shim 和 ctr容器运行时相关的组件:runcDocker相关的组件名称作用dockerDoc原创 2020-12-11 14:09:46 · 677 阅读 · 0 评论 -
[从零开始学容器] 8.容器的资源隔离与资源限制
资源隔离Docker的资源隔离是基于Namespace的。在Linux中有8种Namespace,Docker仅使用了其中6种:Mount Namespace、PID Namespace、Net Namespace、IPC Namespace、UTS Namespace、User Namespace。各个Namespace的作用名称作用Mount Namespace隔离不同的进程或进程组看到的挂载点,即不同的进程看到不同的挂载目录, 在独立的 Mount Namespace 内创原创 2020-12-11 11:25:59 · 573 阅读 · 0 评论 -
[从零开始学容器] 7.容器的监控
生产环境中监控容器的运行状况十分重要,通过监控我们可以随时掌握容器的运行状态,做到线上隐患和问题早发现,早解决。虽然传统的物理机和虚拟机监控已经有了比较成熟的监控方案,但是容器的监控面临着更大的挑战,因为容器的行为和本质与传统的虚拟机是不一样的,总的来说,容器具有以下特性:容器是短期存活的,并且可以动态调度;容器的本质是进程,而不是一个完整操作系统;由于容器非常轻量,容器的创建和销毁也会比传统虚拟机更加频繁。Docker 容器的监控方案有很多,除了 Docker 自带的docker stats原创 2020-12-10 15:06:31 · 456 阅读 · 0 评论 -
[从零开始学容器] 6.编写Dockerfile
介绍了操作容器,下面介绍怎么以用本文件(Dockerfile)来构建容器。DockerfileDockerfile是什么Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile的好处易于版本化管理,Dockerfile 本身是一个文本文件,方便存放在代码仓库做版本管理,可以很方便地找到各个版本之间的变更历史;过程可追溯,Dockerfile 的每一行指令代表一个镜像层,根据 Dockerfile 的内容即可很明确地查看镜像的完整构建原创 2020-12-10 14:25:31 · 294 阅读 · 0 评论 -
[从零开始学容器] 5.容器基本操作
容器是什么容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。容器生命周期根据容器可能处于的状态,分为5种:created: 初建状态running: 运行状态stopped: 停止状态paused: 暂停状态deleted: 删除状态容器的操作创建并启动容器创建容器, 使用命令docker create,创建容器, 如docker create busybox启动容器,启动容器有两种方式:原创 2020-12-03 17:20:08 · 233 阅读 · 0 评论 -
[从零开始学容器] 4.Docker的基础核心概念与镜像配置
Docker核心概念:镜像、容器、仓库Docker核心概念镜像镜像是一个只读的文件和文件夹组合。它包含了容器运行时所需要的所有基础文件和配置信息,是容器启动的基础。所以你想启动一个容器,那首先必须要有一个镜像。镜像是 Docker 容器启动的先决条件使用镜像的两种方式:基于基础镜像构建从镜像仓库上下载容器容器是 Docker 的另一个核心概念。通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。原创 2020-12-03 16:33:49 · 109 阅读 · 0 评论 -
[从零开始学容器] 3.Docker在Centos下的安装
Docker是什么Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker能做什么Docker 是一个用于开发,发布和运行应用程序的开放平台。通俗地讲,Docker 类似于集装箱。在一艘大船上,各种货物要想被整齐摆放并且相互不受到影响,我们就需要把各种货物进行集装箱标准化。有了集装箱,我们就不需要专门运输水果或者化学用品原创 2020-11-30 13:37:45 · 222 阅读 · 1 评论 -
[从零开始学容器] 2.给Go程序增加Swaager文档
在上面文章中我们实现了一个学生信息的简单系统,但是这个系统的rest接口没有文档,而且调试需要使用其它工具进行实现,这对于我们操作来说,有很大的不方便,那么是否有更好的方法来完成此事呢?那就是swagger什么是swaggerSwagger是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。安装go-sw原创 2020-11-27 16:30:45 · 179 阅读 · 0 评论 -
[从零开始学容器] 1.实现一个Go程序
在本次的系列文章中主要以记录整个部署流程为主,所以选择以简单的业务逻辑进行实现,以免被复杂的业务逻辑干扰主要目的。业务场景在一个学生管理系统中,学生信息以学号、姓名、成绩作为储存,可以新增、通过学号查询技术选型名称地址备注GINhttps://github.com/gin-gonic/ginWeb框架Gormhttps://github.com/jinzhu/gormORM框架Swaghttps://github.com/swaggo/gin-swagge原创 2020-11-27 16:28:36 · 272 阅读 · 0 评论