Kubernetes(K8S)+docker容器集群

Kubernetes(k8s)

Kubernetes官网

Kubernetes使用教程

Docker-ce安装官方教程

Kubernetes简介

Kubernetes是google开源的多主机容器管理工具, 简称:k8s,它带有人性化图形管理界面, 它在开源社区很受欢迎github上已经有了20000+的收藏,和7000+的fork。

Kubernetes其特性主要包括:

1、可以非常轻松地开发复杂系统;

2、Kubernetes为微服务架构;

3、系统可以随时随地整体“搬迁”到公有云上;

4、Kubernetes系统架构具备了超强的横向扩容能力。

Kubernetes使用的资源对象

在Kubernetes中,Node、Pod、Replication Controller、Service等概念都可以看作一种资源对象,通过Kubernetes提供的Kubectl工具或者API调用进行操作,并保存在etcd中。

实验环境

系统版本:centos7x3.10.0-514.el7.x86_64

Kubernetes版本:v1.8.3

Docker版本:docker-ce.x86_64 0:18.03.1.ce-1.el7.centos

注:以上最好两个均采用当前最新稳定版本。

关闭防火墙并禁止开机自启

systemctl stop firewalld.service
systemctl disable firewalld

关闭selinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/sysconfig/selinux

重启 reboot

搭建k8s集群

master主机(IP:192.168.152.170)

安装组件:etcd kube-apiserver kube-controller-manager kube-scheduler

1、安装kubernetes服务端

1)下载二进制源码包

wget https://dl.k8s.io/v1.8.3/kubernetes-server-linux-amd64.tar.gz
注:直接在master服务器上执行命令下载即可!

2)解压源码包

tar zxf kubernetes-server-linux-amd64.tar.gz

3)递归创建kubernetes运行文件存放目录

mkdir -p /k8s/{bin,cfg}

4)将解压目录里的文件移动到新创建的目录里

mv kubernetes/server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl} /k8s/bin/

2、安装etcd组件(默认版本:etcd.x86_64 0:3.2.22-1.el7)

1)安装etcd

yum -y install etcd

2)编辑etcd的配置文件

vi /etc/etcd/etcd.conf

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

注:Ubuntu系统etcd配置文件在/etc/default/etcd。

3)启动etcd服务

#设置etcd服务开机自启

systemctl enable etcd

#启动etcd服务

systemctl start etcd

3、配置kube-apiserver组件

1)创建kube-apiserver配置文件

vi /k8s/cfg/kube-apiserver

#启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#Etcd服务地址
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.152.170:2379"
#API服务监听地址
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
#API服务监听端口
KUBE_API_PORT="--insecure-port=8080"
#对集群中成员提供API服务地址
KUBE_ADVERTISE_ADDR="--advertise-address=192.168.152.170"
#允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
#集群分配的IP范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.0.100.0/24"

2)创建kube-apiserver的systemd服务启动文件

vi /lib/systemd/system/kube-apiserver.service

[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/k8s/cfg/kube-apiserver
#ExecStart=/k8s/bin/kube-apiserver ${KUBE_APISERVER_OPTS}
ExecStart=/k8s/bin/kube-apiserver \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_ETCD_SERVERS} \
${KUBE_API_ADDRESS} \
${KUBE_API_PORT} \
${KUBE_ADVERTISE_ADDR} \
${KUBE_ALLOW_PRIV} \
${KUBE_SERVICE_ADDRESSES}
Restart=on-failure
[Install]
WantedBy=multi-user.target

3)启动kube-apiserver服务

#重新加载kube-apiserver服务守护进程

systemctl daemon-reload

#设置kube-apiserver服务开机自启

systemctl enable kube-apiserver

#重启kube-apiserver服务

systemctl restart kube-apiserver

注:apiserver默认支持etcd3,如果是etcd2,需启动时指定版本选项--storage-backend=etcd2

4、配置kube-scheduler组件

1)创建kube-scheduler配置文件

vi /k8s/cfg/kube-scheduler

#启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#k8s-master服务地址
KUBE_MASTER="--master=192.168.152.170:8080"
#指定master为控制台
KUBE_LEADER_ELECT="--leader-elect"

2)创建kube-scheduler的systemd服务启动文件

vi /lib/systemd/system/kube-scheduler.service

[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/k8s/cfg/kube-scheduler
ExecStart=/k8s/bin/kube-scheduler \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target

3)启动kube-scheduler服务

#重新加载kube-scheduler服务守护进程

systemctl daemon-reload

#设置kube-scheduler服务开机自启

systemctl enable kube-scheduler

#重新启动kube-scheduler服务

systemctl restart kube-scheduler

5、配置kube-controller-manager组件

1)创建kube-controller-manager配置文件

vi /k8s/cfg/kube-controller-manager

#启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#k8s-master服务地址
KUBE_MASTER="--master=192.168.152.170:8080"

2)创建kube-controller-manager的systemd服务启动文件

vi /lib/systemd/system/kube-controller-manager.service

[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/k8s/cfg/kube-controller-manager
ExecStart=/k8s/bin/kube-controller-manager \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target

3)启动kube-controller-manager服务

#重新加载kube-controller-manager服务守护进程

systemctl daemon-reload

#设置kube-controller-manager服务开机自启

systemctl enable kube-controller-manager

#重新启动kube-controller-manager服务

systemctl restart kube-controller-manager

注:master节点组件全部启动了,需要注意的是服务启动顺序有依赖,先启动etcd,再启动apiserver,其他组件无顺序要求。

查看master节点组件进程状态 ps -ef | grep kube

注:以上截图说明所有组件都正常运行!如果单独一个组件启动失败可以使用k8s自带查看日志命令。

6、K8s查看具体组件日志的命令

journalctl –u etcd

journalctl -u kube-apiserver

journalctl -u kube-controller-manager

journalctl -u kube-scheduler

node-1主机(192.168.152.168)

安装组件:kubelet kube-proxy docker

1、安装kubernetes的node-1节点

原文地址:http://blog.51cto.com/13043516/2285350

时间: 2024-11-07 02:05:50

Kubernetes(K8S)+docker容器集群的相关文章

Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 master 服务器的组件有:kube-apiserver.kube-controller-manager.kube-scheduler 因此需要下载k8s master,下载地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGE

纯手工搭建kubernetes(k8s)1.9集群 - (二)核心模块部署

1. 部署ETCD(主节点) 1.1 简介 ??kubernetes需要存储很多东西,像它本身的节点信息,组件信息,还有通过kubernetes运行的pod,deployment,service等等.都需要持久化.etcd就是它的数据中心.生产环境中为了保证数据中心的高可用和数据的一致性,一般会部署最少三个节点.我们这里以学习为主就只在主节点部署一个实例. 如果你的环境已经有了etcd服务(不管是单点还是集群),可以忽略这一步.前提是你在生成配置的时候填写了自己的etcd endpoint哦~

Docker容器集群构建!!!

项目背景: 我们在使用docker给我们带来的便利的同时,有时候我们需要搭建docker集群,这个时候,下面讲解的内容就显得弥足珍贵了. 实验环境: vmware workstation 11 centos7.0的系统下 服务器:ip:192.168.0.60 SecureCRT (ssh远程连接软件) 软件介绍: 下面是两篇我对docker的一些理解和认识. http://9399369.blog.51cto.com/9389369/1758576 <docker简明教程一> http://

docker6 构建docker容器集群

十五.构建docker集群 让不同主机中的docker容器可以互相访问. 本章介绍几种解决方案,包括利用端口映射实现容器之间的快速互联,使用Ambassador容器解决跨主机的容器互联. 15.1 使用自定义网桥连接跨主机容器 docker默认的网桥是docker0,它只会在本机连接所有的容器. 容器的虚拟网卡在主机上看一般叫做veth*而docker0网桥把所有这些网卡桥接在一起. 可以把这个网络看成是一个私有的网络,如果要让外网连接到容器中,就需要做端口映射,即-p参数. 15.2 使用Am

实战案例:构建docker容器集群 (解决方案一:使用自定义网桥连接跨主机容器)

一.实验环境虚拟机a两块网卡    eth0   eth1 (IP地址static或者dhcp)虚拟机b两块网卡    eth0   eth1 (IP地址static或者dhcp) 二.在两台虚拟机上配置网桥虚拟机a操作:apt-get install bridge-utilsvim /etc/network/interfaces auto eth0iface eth0 inet dhcp auto eth1iface eth1 inet dhcp auto br0iface br0 inet

Docker全新的容器集群项目——SwarmKit初步测试

题记 对于Docker容器集群来说,比较成熟的方案包括Swarm.Mesos.k8s和Google的Kubernetes,特别是后者得到了更多厂商的使用和推广,但是kubernetes相比较来说技术门槛较高,让很多用户望而却步,幸好,Docker在今年的6月7号开源发布了原生的集群管理工具SwarmKit,主要提供容器集群以及编排能力,那赶紧尝试一下,看看有什么好的功能. SwarmKit框架 SwarmKit中有两种角色,Manager和Worker.Manager主要管理节点.调度任务.Wo

docker学习6-docker-compose容器集群编排

前言 实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器. 我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有需要一个配置文件,负责实现对Docker容器集群的快速编排. docker-compose 简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排. Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(serv

【MySQL】容器集群支持数据库实践

京东容器数据库系统,管理1800台物理计算节点,生产1W+ 多MySQL Docker容器实例.架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦处理.为描述方便,京东容器化数据库系统命名为CDS,底层京东Docker容器计算平台命名为JDOS. 本文重点介绍JDOS如何支持CDS.CDS是更大的话题,后续数据库团队会分享相关实践. 介绍 CDS依赖京东坚实的JDOS技术,生产运行1W+个MySQL容器实例.CDS借助JDOS技术优势获得主要3个方面的技术收益: CDS借助Doc

Kubernetes(K8s)(二)——搭建Kubernetes容器集群管理系统

(1).配置说明 节点角色 IP地址 CPU 内存 master.etcd 192.168.128.110 4核 2G node1/minion1 192.168.128.111 4核 2G node2/minion2 192.168.128.112 4核 2G (2).搭建Kubernetes容器集群管理系统 1)三台主机安装常用的软件包 bash-completion可以使得按<Tab>键补齐,vim是vi编辑器的升级版,wget用于下载阿里云的yum源文件. # yum -y insta