k8s 容器部署

目录

Docker

什么是kubernetes

容器部署

k8S

架构和组件

安装

部署方式介绍

[kubeadm 部署方式介绍](#kubeadm 部署方式介绍)

[Docker Compose 容器编排](#Docker Compose 容器编排)


容器技术的官方定义是:

容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。

要理解这个定义,首先要弄清楚容器和虚拟机的区别

简单来说,虚拟机是一个机器,但容器是一个进程。

每一个虚拟机里面都有一套完整的操作系统,而容器层安装在操作系统之上,它直接利用了宿主机的内核,更加轻量化,启动速度极快。通常,我们在会每个容器里面跑单个的应用,而在虚拟机里会跑很多应用。下图展示了虚拟机和容器的不同。

容器技术具有:简化部署、快速启动、服务组合、易于迁移等优点。

Docker

最流行的开源容器引擎:Docker

谈到容器,就不能不讲Docker。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Docker把容器变得标准化了。要理解Docker,你需要明白三个最主要的概念:容器、镜像、仓库

  • 容器是运行在虚拟机上的进程。

  • 镜像是一种存储形式,可以理解为数据或应用的副本。

  • 仓库是用来存储镜像的。

Docker能够普遍使用起来,很大程度上个得益于Docker的仓库里汇集了很多已经标准化的镜像,大大提升了部署效率。

什么是kubernetes

了解了容器和Docker,再来看kubernetes的定义就很容易理解了。

上文提到,Kubernetes是用于自动部署、扩展和容器化应用程序的开源系统。

当我们使用的容器服务多了,面临的访问量增大以后,我们就需要一种工具把这些容器统一的管理起来,需要实现对这些容器的自动部署、扩展和管理。也就是俗称的容器编排。

Kubernetes就是这样一种容器编排系统

上图是Kubernetes的架构图。

从大的模块看,图中包含Master组件(APIs, scheduler, etc),Node节点和cloud端。

Master中,包含负责提供API服务的组件kube-apiserver;作为后台数据库的etcd,监听组件kube-scheduler;运行控制器的组件kube-controller-manager。

Node节点中包括运行在各个节点的客户端的kubelet,运行在各个节点的网络代理组件kube-proxy,支持运行容器底层环境的软件Container Runtime。

Cloud端作为集群外部的附加能力,通过与cloud-controller-manager组件对接,扩展k8s集群云上动态扩展的特性。

原文链接:https://blog.csdn.net/SinnetCloud/article/details/105580566

容器部署

分布式集群容器选择Docker,k8s进行容器管理。

**容器:**方便做持续集成并有助于整体发布的虚拟化技术。 容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

一次构建,随处运行

  • 更快速的应用交付和部署

  • 更便捷的升级和扩缩容

  • 更简单的系统运维

  • 更高效的计算资源利用

k8S

k8s 是kubernets的缩写,'8'代表中间的八个字符。

其实 Docker 和 k8s 并非直接的竞争对手,它俩相互依存。 Docker 是一个容器化平台,而 k8s 是 Docker 等容器平台的协调器。

随着容器越来越多出现了一系列新问题:

  • 如何协调和调度这些容器?

  • 如何在升级应用程序时不会中断服务?

  • 如何监视应用程序的运行状况?

  • 如何批量重新启动容器里的程序?

解决这些问题需要容器编排技术,可以将众多机器抽象,对外呈现出一台超大机器。现在业界比较流行的有:k8s、Mesos、Docker Swarm。

在业务发展初期只有几个微服务,这时用 Docker 就足够了,但随着业务规模逐渐扩大,容器越来越多,运维人员的工作越来越复杂,这个时候就需要编排系统解救opers。

架构和组件

k8s 由众多组件组成,组件间通过 API 互相通信,归纳起来主要分为三个部分:

  • Controller Manager,即控制平面,用于调度程序以及节点状态检测。

  • Nodes,构成了Kubernetes集群的集体计算能力,实际部署容器运行的地方。

  • Pods,Kubernetes集群中资源的最小单位。

k8s集群架构图

https://juejin.cn/post/6913568633813729294

安装

https://blog.csdn.net/iiothub/article/details/135929132

复制代码
 # Kubernetes
 ​
 https://iothub.org.cn/docs/kubernetes/
 https://iothub.org.cn/docs/kubernetes/pro/deploy-kubernetes/

部署方式介绍

目前生产部署 Kubernetes 集群主要有两种方式:

kubeadm Kubeadm 是一个 K8s 部署工具, 提供 kubeadm init 和 kubeadm join, 用于快速部 署 Kubernetes 集群。 官方地址: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

二进制包 从 github 下载发行版的二进制包, 手动部署每个组件, 组成 Kubernetes 集群。 Kubeadm 降低部署门槛, 但屏蔽了很多细节, 遇到问题很难排查。 如果想更容易可 控, 推荐使用二进制包部署 Kubernetes 集群, 虽然手动部署麻烦点, 期间可以学习很 多工作原理, 也利于后期维护。

kubeadm 部署方式介绍

kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具, 这个工具能通 过两条指令完成一个 kubernetes 集群的部署: 第一、 创建一个 Master 节点 kubeadm init 第二, 将 Node 节点加入到当前集群中 $ kubeadm join <Master 节点的 IP 和端口 >

这个工具能通过两条指令完成一个kubernetes集群的部署:

复制代码
 创建一个 Master 节点
 ​
 $ kubeadm init
 ​
 将一个 Node 节点加入到当前集群中
 ​
 $ kubeadm join <Master节点的IP和端口 >

环境准备

host文件、时间同步、安装docker

部署高可用kubernetes集群

节点配置

主机名 IP地址 角色
k8s-master1 172.51.216.81 master
k8s-master2 172.51.216.82 master
k8s-master3 172.51.216.83 master
k8s-node1 172.51.216.84 node
k8s-node2 172.51.216.85 node
k8s-node3 172.51.216.86 node
k8s-node4 172.51.216.87 node
VIP(虚拟ip) 172.51.216.90 vip

Docker Compose 容器编排

容器编排工具

  • docker machine

    • 在虚拟机中部署docker容器引擎的工具
  • docker compose

    • 是一个用于定义和运行多容器Docker的应用程序工具
  • docker swarm

    • 是Docker Host主机批量管理及资源调度管理工具
  • mesos+marathon

    • mesos 对计算机计算资源进行管理和调度

    • marathon 服务发现及负载均衡的功能

  • kubernetes

    • google开源的容器编排工具
相关推荐
锦年JNian6 小时前
docker常用命令
运维·docker·容器
专家大圣8 小时前
5分钟启动标准化安卓环境:Docker-Android让模拟器配置不再踩坑
android·网络·docker·容器·内网穿透
winds~9 小时前
【git】docker中无法进行git命令行补全
git·docker·容器
眠りたいです10 小时前
基于脚手架微服务的视频点播系统-脚手架开发部分-FFmpeg,Etcd-SDK的简单使用与二次封装
c++·微服务·云原生·架构·ffmpeg·etcd
cui_win20 小时前
Minikube 安装与使用详细指南(Centos7 踩坑版)
docker·kubernetes·minikube·centos7·升级内核
似水流年 光阴已逝21 小时前
从Jar包到K8s上线:全流程拆解+高可用实战
java·kubernetes·jar
行思理1 天前
Dockerfile 各指令说明
运维·macos·docker·容器·php
FreeBuf_1 天前
Docker Compose曝路径遍历漏洞,可致任意覆写文件(CVE-2025-62725)
docker·容器·eureka
AKAMAI1 天前
以 Akamai Inference Cloud 实现无处不在的人工智能
人工智能·云原生·云计算