kubernetes和docker的作用这里就不作介绍了,直接进入主题。

本文的目的是搭建docker集群,并使用kubernetes管理它们。

文中的软件环境除了kubernetes和docker,还用到了etcd和flannel。etcd服务运行在master机器上与minion机器上的flannel配套使用,作用是使每台minion上运行的

docker拥有不同的ip段,最终目的是使不同minion上正在运行的docker containner都有一个与别的任意一个containner(别的minion上运行的docker containner)不

一样的IP地址。如果不能理解可以在网上搜一下etcd和flannel。

环境:

centos7系统机器三台:

192.168.50.130: 用来安装kubernetes master

192.168.50.131: 用作kubernetes minion (minion1)

192.168.50.132: 用作kubbernetes minion (minion2)

一、关闭系统运行的防火墙

如果系统开启了防火墙则按如下步骤关闭防火墙(所有机器)

# systemctl stop firewalld
# systemctl disable firewalld

二、MASTER安装配置

1. 安装并配置Kubernetes master(yum 方式)

# yum -y install etcd kubernetes

配置etcd,编辑/etc/etcd/etcd.conf。确保列出的这些项都配置正确并且没有被注释掉,下面的配置都是如此

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

配置kubernetes,编辑/etc/kubernetes/apiserver

KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet_port=10250"
KUBE_ETCD_SERVERS="--etcd_servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""

2. 启动etcd, kube-apiserver, kube-controller-manager and kube-scheduler服务

# for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done

3. etcd设置项(后面会被运行在minion上的flannel自动获取并用来设置docker的IP地址)

# etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16"}'

tips:/coreos.com/network/config只是配置项名称,无需多虑

4. 至此master配置完成,运行kubectl get nodes可以查看有多少minion在运行,以及其状态。这里我们的minion还都没有开始安装配置,所以运行之后结果为空

# kubectl get nodes
NAME LABELS STATUS

三、MINION安装配置(每台minion机器都按如下安装配置)

1. 环境安装和配置

# yum -y install docker-engine flannel kubernetes

配置flannel,编辑/etc/sysconfig/flanneld

FLANNEL_ETCD="http://192.168.50.130:2379"

配置kubernetes,编辑/etc/kubernetes/config

KUBE_MASTER="--master=http://192.168.50.130:8080"

配置kubernetes,编辑/etc/kubernetes/kubelet(请使用每台minion自己的IP地址比如:192.168.50.131代替下面的$LOCALIP)

KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
# change the hostname to this host’s IP address
KUBELET_HOSTNAME="--hostname_override=$LOCALIP"
KUBELET_API_SERVER="--api_servers=http://192.168.50.130:8080"
KUBELET_ARGS=""

2. 准备启动服务(如果本来机器上已经运行过docker的请看过来,没有运行过的请忽略此步骤)

运行ifconfig,查看机器的网络配置情况(有docker0)

# ifconfig
docker0 Link encap:Ethernet HWaddr ::B2::2E:
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B)

warning:在运行过docker的机器上可以看到有docker0,这里在启动服务之前需要删掉docker0配置,在命令行运行:sudo ip link delete docker0

这样做的目的是重启docker的时候由flannel给docker分配地址段。

3. 启动服务

# for SERVICES in kube-proxy kubelet docker flanneld; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done

tips:在这里我碰到一个奇怪的问题,启动kubelet服务或者flannel服务会出问题而不能启动,如果你也碰到类似问题。可以尝试卸载kubernetes,重新安装配置一下

我是这么解决的,重装一下就一切正常了^_^

四、配置完成验证安装

确定两台minion(192.168.50.131和192.168.50.132)和一台master(192.168.50.130)都已经成功的安装配置并且服务都已经启动了。

切换到master机器上,运行命令kubectl get nodes

# kubectl get nodes
NAME LABELS STATUS
192.168.50.131 kubernetes.io/hostname=192.168.50.131 Ready
192.168.50.132 kubernetes.io/hostname=192.168.50.132 Ready

可以看到配置的两台minion已经在master的node列表中了。如果想要更多的node,只需要按照minion的配置,配置更多的机器就可以了。

至此一个由kubernetes管理的docker集群已经配置完成。下面一篇将会写一下kubernetes控制minion运行docker container,关于kubernetes的Pod,Replication controller(rc),Service的一些东西。

centos7上基于kubernetes的docker集群管理的更多相关文章

  1. 基于kubernetes构建Docker集群管理详解-转

    http://blog.liuts.com/post/247/ 一.前言        Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度 ...

  2. 二、基于kubernetes构建Docker集群环境实战

    kubernetes是google公司基于docker所做的一个分布式集群,有以下主件组成 etcd: 高可用存储共享配置和服务发现,作为与minion机器上的flannel配套使用,作用是使每台 m ...

  3. Kubernetes(k8s) docker集群搭建

    原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背 ...

  4. 基于Kubernetes的WAF集群介绍

    Kubernetes是Google开源的容器集群管理系统.它构建Docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,可看作是基于容器技术的PaaS平台. 本文旨 ...

  5. 基于zookeeper+mesos+marathon的docker集群管理平台

    参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...

  6. docker集群管理之kubernetes

    一.简介 kubernetes又叫做k8s,是Google开发的一款开源的docker集群管理工具,在这里对它的“发家史”,我不做过多的阐述,有时间大家可以自己去百度一下: 下面我要讲的就是容易混淆的 ...

  7. Docker集群管理(一)—— 基础docker+swarm+shipyard

    目的 学习docker的集群管理,摸索出高可用的docker微服务架构方案.本篇文章只初步的了解下swarm(docker新版已集成了swarm)的使用,了解docker的发现服务的基础方法(dock ...

  8. docker集群管理

    docker集群管理 ps:docker machine     docker swarm       docker compose  在Docker Machine发布之前,你可能会遇到以下问题: ...

  9. Docker集群管理工具 - Kubernetes 部署记录 (运维小结)

    一.  Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...

随机推荐

  1. 整理一下postgresql的扩展功能postgis和pgrouting的使用

    postgis windows的下的安装使用postgresql的bin目录下的stackbuiler Ubuntu14.04下的安装: apt-get install postgresql-9.3- ...

  2. ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall

    题目链接:https://nanti.jisuanke.com/t/30991 2000ms 262144K   Feeling hungry, a cute hamster decides to o ...

  3. Fence Repair (二叉树求解)(优先队列,先取出小的)

    题目链接:http://poj.org/problem?id=3253 Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Sub ...

  4. JAVA多线程之Volatiles

    Java 语言中的 volatile 变量可以被看作是一种 “轻量级的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但 ...

  5. SVN的搭建(权限配置篇)

    如要转载,请注明出处! 两个问题: 如何维护多个目录或者仓库 目录权限如何设置 ============================================================ ...

  6. 屏蔽“您目前使用的Discuz!程序有新版本发布,请及时升级!”提示

    在/discuz/source/admincp目录下找到文件:admincp_main.php 找到第49行: if($_G['uid'] && $_G['member']['allo ...

  7. JDK 7 API 下载

    JDK 7 API 官方下载地址: http://www.oracle.com/technetwork/java/javase/documentation/java-se-7-doc-download ...

  8. arcgis js 几种拓扑关系详解

    arcgis js的拓扑关系,在处理复杂逻辑和分析时,可以通过拓扑关系,减小客户端的工作量 拓扑关系: 1.overlaps 重叠 这里的重叠跟平时我们理解的不太一样,这里的重叠,必须是A与B有交集, ...

  9. concurrent.futures模块与协程

    concurrent.futures  —Launching parallel tasks    concurrent.futures模块同时提供了进程池和线程池,它是将来的使用趋势,同样我们之前学习 ...

  10. Markdown引用图片,且不使用网上链接的解决方法

    首先介绍下markdown使用图片的3种方法 使用本地图片,缺点是要用到本地的绝对路径,不适合对文档做迁移,否则会有图片链接失效的情况 ![thisisimage](C:\\Users\\Goose\ ...