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. mysql事务锁表

    -- 查看被锁住的SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 等待锁定SELECT * FROM INFORMATION_SCHEMA.INNO ...

  2. Appium+Python入门学习总结

    最近研究了一下Appium,查看了一些大神的博客,绕过了一些坑,现将从搭建环境到运行真机测试的流程总结如下: 一.搭建环境,这里我参考了虫师的博客,一步一步来,搭好了Appium的环境,如果需要真机测 ...

  3. Comparing Two High-Performance I/O Design Patterns--reference

    by Alexander Libman with Vladimir GilbourdNovember 25, 2005 Summary This article investigates and co ...

  4. Spring相关理解

    日常拖完整患者............... 待续...

  5. echarts折柱混合(图表数据与x轴对应显示)

    一天24个小时,每个小时不一定都有对应的数据,所以后台给出的数据,只有每个时间点对应的数据,比如4点,给的是112,5点的242,其他时间没有,则只显示4点,5点时候的数据,那么现在对应的时间点就是后 ...

  6. js addEventListener调用传参函数

    先看这段代码 function abc(key){ console.log(key); } for(let i=0;i<oInput.length;i++){ oInput[i].addEven ...

  7. 报错:'byte' does not name a type

    这个错误是因为你在.cpp/.h中使用 byte 这个类型,把他修改成int就ok了

  8. GIT教程笔记

    GIT的工作流程: 先在工作目录中添加.修改文件 一般是在工作目录建立你的工程文件夹,然后通过命令行进入文件夹后  git init 初始化 将需要进行版本管理的文件放入缓存区  git add 文件 ...

  9. IDA逆向:数组的逆向

    阅读<IDA Pro权威指南>第八章,整理的一些笔记,作为逆向的基础,可能有很多认识不足. //全局分配数组 *************************************** ...

  10. VMware Workstation Pro 11、12 密钥

    11:1F04Z-6D111-7Z029-AV0Q4-3AEH8 12:5A02H-AU243-TZJ49-GTC7K-3C61N