16、CentOS7 安装Docker之扩展(docker集群管理集群之swram)

docker集群管理之swarm

一、前言

实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容器集群系统,我们该如何选择呢?它们之中,Swarm 是 Docker 原生的,同时也是最简单,最易学,最节省资源的,比较适合中小型公司使用。

Docker Swarm 介绍

Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令。目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络。

Docker Swarm 是一个为 IT 运维团队提供集群和调度能力的编排工具。用户可以把集群中所有 Docker Engine 整合进一个「虚拟 Engine」的资源池,通过执行命令与单一的主 Swarm 进行沟通,而不必分别和每个 Docker Engine 沟通。在灵活的调度策略下,IT 团队可以更好地管理可用的主机资源,保证应用容器的高效运行。

Docker Swarm 优点

任何规模都有高性能表现

对于企业级的 Docker Engine 集群和容器调度而言,可拓展性是关键。任何规模的公司——不论是拥有五个还是上千个服务器——都能在其环境下有效使用 Swarm。 经过测试,Swarm 可拓展性的极限是在 1000 个节点上运行 50000 个部署容器,每个容器的启动时间为亚秒级,同时性能无减损。

灵活的容器调度

Swarm 帮助 IT 运维团队在有限条件下将性能表现和资源利用最优化。Swarm 的内置调度器(scheduler)支持多种过滤器,包括:节点标签,亲和性和多种容器部策略如 binpack、spread、random 等等。

服务的持续可用性

Docker Swarm 由 Swarm Manager 提供高可用性,通过创建多个 Swarm master 节点和制定主 master 节点宕机时的备选策略。如果一个 master 节点宕机,那么一个 slave 节点就会被升格为 master 节点,直到原来的 master 节点恢复正常。 此外,如果某个节点无法加入集群,Swarm 会继续尝试加入,并提供错误警报和日志。在节点出错时,Swarm 现在可以尝试把容器重新调度到正常的节点上去。

和 Docker API 及整合支持的兼容性Swarm 对 Docker API 完全支持,这意味着它能为使用不同 Docker 工具(如 Docker CLI,Compose,Trusted Registry,Hub 和 UCP)的用户提供无缝衔接的使用体验。

Docker Swarm 为 Docker 化应用的核心功能(诸如多主机网络和存储卷管理)提供原生支持。开发的 Compose 文件能(通过 docker-compose up )轻易地部署到测试服务器或 Swarm 集群上。Docker Swarm 还可以从 Docker Trusted Registry 或 Hub 里 pull 并 run 镜像。

综上所述,Docker Swarm 提供了一套高可用 Docker 集群管理的解决方案,完全支持标准的 Docker API,方便管理调度集群 Docker 容器,合理充分利用集群主机资源。

* 并非所有服务都应该部署在Swarm集群内。数据库以及其它有状态服务就不适合部署在Swarm集群内。*

相关概念

节点

运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node) 。节点分为管理 (manager) 节点和工作 (worker) 节点。

管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,leader 通过 raft 协议实现。

工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。下图展示了集群中管理节点与工作节点的关系。

服务和任务

任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。 服务 (Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

replicated services 按照一定规则在各个工作节点上运行指定个数的任务。global services 每个工作节点上运行一个任务两种模式通过 docker service create 的 --mode 参数指定。下图展示了容器、任务、服务的关系。

创建 Swarm 集群

我们知道 Swarm 集群由管理节点和工作节点组成。我们来创建一个包含一个管理节点和两个工作节点的最小 Swarm 集群。

 

 

二、准备环境CentOS 7下使用 yum 安装)

主机名称

IP地址

操作系统

软件

linux-node1.server.com

192.168.10.101

CentOS7.2

Docker

linux-node2.server.com

192.168.10.102

CentOS7.2

Docker

linux-node3.server.com

192.168.10.103

CentOS7.2

Docker

将主机名为linux-node1.server.com的机器作为manager节点,也就是管理节点,而linux-node2.server.com和linux-node3.server.com作为工作节点。

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

1、关闭防火墙\关闭SeLinux\设置时间同步(在node1、node2、node3上操作):

systemctl stop firewalld.service && systemctl disable firewalld.service

sed -i "s/SELINUX=enforcing/SELINUX=disabled/"   /etc/selinux/config

setenforce 0

yum -y install wget net-tools ntp ntpdate lrzsz

systemctl restart ntpdate.service ntpd.service && systemctl enable ntpd.service ntpdate.service

 

2、配置主机映射/etc/hosts(在node1、node2、node3上操作):

echo 192.168.10.101  linux-node1.server.com  >> /etc/hosts

echo 192.168.10.102  linux-node2.server.com  >> /etc/hosts

echo 192.168.10.103  linux-node3.server.com  >> /etc/hosts

hostnamectl --static set-hostname linux-node1.server.com

bash

 

3、安装 Docker(在node1、node2、node3上操作)

Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下:

yum -y install docker-io

 yum list installed | grep docker

docker.x86_64                        2:1.13.1-68.gitdded712.el7.centos @extras  

docker-client.x86_64                 2:1.13.1-68.gitdded712.el7.centos @extras  

docker-common.x86_64                 2:1.13.1-68.gitdded712.el7.centos @extras

 

4.镜像加速(在node1、node2、node3上操作):

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是阿里的镜像地址:

在/etc/docker/daemon.json文件中添加如下内容.

{

  "registry-mirrors": ["https://wghlmi3i.mirror.aliyuncs.com"]

}

或者使用如下地址

{

  "registry-mirrors": ["https://registry.docker-cn.com"]

}

 

5、启动 Docker 后台服务(在node1、node2、node3上操作):

systemctl start docker.service

到此,docker 在 CentOS 系统的安装完成。

 

 

三、创建swarm集群:

1、初始化集群(在node1上操作)

[root@linux-node1 ~]# docker swarm init --advertise-addr 192.168.10.101

Swarm initialized: current node (xxkq6mhnilt0lulmhwrwrtfrr) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \

    --token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt \

    192.168.10.101:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

 

2、查看集群状态(在node1上操作)

[root@linux-node1 ~]# docker info | grep -i swarm

Swarm: active   #激活状态

 

3、查看端口状态(在node1上操作)

[root@linux-node1 ~]# netstat -tunlp | grep docker (默认监听两个端口,tcp2377端口为集群的管理端口,tcp7946为节点之间的通讯端口)

tcp6       0      0 :::2377                 :::*                    LISTEN      3979/dockerd-curren

tcp6       0      0 :::7946                 :::*                    LISTEN      3979/dockerd-curren

 

4、查看默认创建网络(在node1上操作)

(默认会创建一个overl

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在CentOS 7上安装Docker和Kubernetes,您可以按照以下步骤进行操作: 1. 安装Docker: - 更新系统:sudo yum update - 添加Docker仓库:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - 安装Docker引擎:sudo yum install docker-ce docker-ce-cli containerd.io - 启动Docker服务:sudo systemctl start docker - 配置开机自启动:sudo systemctl enable docker 2. 安装Kubernetes: - 添加Kubernetes仓库:sudo vi /etc/yum.repos.d/kubernetes.repo - 在文件中添加以下内容: ``` [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* ``` - 安装Kubernetes组件:sudo yum install kubelet kubeadm kubectl - 启动Kubernetes服务:sudo systemctl start kubelet - 配置开机自启动:sudo systemctl enable kubelet 3. 初始化Kubernetes集群: - 运行以下命令以初始化主节点: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` - 初始化完成后,按照输出中的提示运行以下命令以将当前用户配置为Kubernetes集群的普通用户: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` - 安装网络插件(例如Calico)以实现Pod网络功能: ``` kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` 这些步骤将在CentOS 7上安装Docker和Kubernetes,并启动一个Kubernetes集群。请注意,这只是基本的安装步骤,您可能还需要进行其他配置和设置以满足特定要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值