1、环境说明:
操作系统:CentOS7
Kubernetes 版本:v1.8.3
Docker 版本:v17.06-ce

master  192.168.10.220  etcd  kube-apiserver  keub-controller-manager kube-scheduler flannel

node1   192.168.10.221  etcd  kube-proxy docker flannel

node2    192.168.10.222  etcd  kube-proxy docker flannel

2、时间同步

3、etcd集群部署(三台都需要)

yum install etcd -y

三台配置文件如下

[root@manager ~]# cat /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.10.220:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.220:2379,http://127.0.0.1:2379"
ETCD_NAME="etcd1" #[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.220:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.220:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.10.220:2380,etcd2=http://192.168.10.221:2380,etcd3=http://192.168.10.222:2380,"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
[root@node1 etcd]# cat /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.10.221:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.221:2379,http://127.0.0.1:2379"
ETCD_NAME="etcd2" #[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.221:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.221:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.10.220:2380,etcd2=http://192.168.10.221:2380,etcd3=http://192.168.10.222:2380,"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
[root@node2 etcd]# cat /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.10.222:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.222:2379,http://127.0.0.1:2379"
ETCD_NAME="etcd3" #[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.222:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.222:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.10.220:2380,etcd2=http://192.168.10.221:2380,etcd3=http://192.168.10.222:2380,"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

systemctl start etcd && systemctl enable etcd

检测结果

master节点操作

[root@manager ~]# mkdir -p /opt/kubernetes/{bin,cfg}
[root@manager ~]# tar xf kubernetes-server-linux-amd64.tar.gz
[root@manager ~]# mv kubernetes/server/bin/{kube-apiserver,kube-scheduler,kube-controller-manager,kubectl} /opt/kubernetes/bin apiserver
创建配置文件
[root@manager ~]# cat /opt/kubernetes/cfg/kube-apiserver
# 启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
# 日志级别
KUBE_LOG_LEVEL="--v=4"
# Etcd服务地址
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.10.220: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.10.220"
# 允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
# 集群分配的IP范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.10.10.0/24" 创建服务
[root@manager ~]# cat /lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver
#ExecStart=/opt/kubernetes/bin/kube-apiserver ${KUBE_APISERVER_OPTS}
ExecStart=/opt/kubernetes/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 设置开机启动
# systemctl daemon-reload
# systemctl enable kube-apiserver
# systemctl restart kube-apiserver
scheduler

创建配置文件
[root@manager ~]# cat /opt/kubernetes/cfg/kube-scheduler
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=4"
KUBE_MASTER="--master=192.168.10.220:8080"
KUBE_LEADER_ELECT="--leader-elect" 创建服务
[root@manager ~]# cat /lib/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler
ExecStart=/opt/kubernetes/bin/kube-scheduler \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target 设置开机启动
# systemctl daemon-reload
# systemctl enable kube-scheduler
# systemctl restart kube-scheduler
controller-manager
创建配置文件
[root@manager ~]# cat /opt/kubernetes/cfg/kube-controller-manager
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=4"
KUBE_MASTER="--master=192.168.10.220:8080" 创建服务
[root@manager ~]# cat /lib/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-controller-manager
ExecStart=/opt/kubernetes/bin/kube-controller-manager \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target 启动服务
# systemctl daemon-reload
# systemctl enable kube-controller-manager
# systemctl restart kube-controller-manager

验证结果

[root@manager ~]# ps -ef|grep kube
root : ? :: /opt/kubernetes/bin/kube-apiserver --logtostderr=true --v= --etcd-servers=http://192.168.10.210:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --advertise-address=192.168.10.210 --allow-privileged=false --service-cluster-ip-range=10.10.10.0/24
root : ? :: /opt/kubernetes/bin/kube-scheduler --logtostderr=true --v= --master=192.168.10.210: --leader-elect
root : ? :: /opt/kubernetes/bin/kube-controller-manager --logtostderr=true --v= --master=192.168.10.210:

node1和node2节点同时做如下操作

软件包下载地址
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.8.md#v183 [root@node1 ~]# tar xf kubernetes-node-linux-amd64.tar.gz
[root@node1 ~]# mkdir -p /opt/kubernetes/{bin,cfg}
[root@node1 ~]# mv kubernetes/node/bin/{kubelet,kube-proxy} /opt/kubernetes/bin/ kubelet
创建配置文件
[root@node1 ~]# cat /opt/kubernetes/cfg/kubelet.kubeconfig
apiVersion: v1
kind: Config
clusters:
- cluster:
server: http://192.168.10.220:8080
name: local
contexts:
- context:
cluster: local
name: local
current-context: local 创建服务
[root@node1 ~]# cat /opt/kubernetes/cfg/kubelet
# 启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
# 日志级别
KUBE_LOG_LEVEL="--v=4"
# Kubelet服务IP地址
NODE_ADDRESS="--address=192.168.10.221"
# Kubelet服务端口
NODE_PORT="--port=10250"
# 自定义节点名称
NODE_HOSTNAME="--hostname-override=192.168.10.221"
# kubeconfig路径,指定连接API服务器
KUBELET_KUBECONFIG="--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig"
# 允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
# DNS信息
KUBELET_DNS_IP="--cluster-dns=10.10.10.2"
KUBELET_DNS_DOMAIN="--cluster-domain=cluster.local"
# 禁用使用Swap
KUBELET_SWAP="--fail-swap-on=false" [root@node1 ~]# cat /lib/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kubelet
ExecStart=/opt/kubernetes/bin/kubelet \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_ADDRESS} \
${NODE_PORT} \
${NODE_HOSTNAME} \
${KUBELET_KUBECONFIG} \
${KUBE_ALLOW_PRIV} \
${KUBELET_DNS_IP} \
${KUBELET_DNS_DOMAIN} \
${KUBELET_SWAP}
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target 启动
# systemctl daemon-reload
# systemctl enable kubelet
# systemctl restart kubelet
[root@node1 ~]#  cat /opt/kubernetes/cfg/kube-proxy
# 启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
# 日志级别
KUBE_LOG_LEVEL="--v=4"
# 自定义节点名称
NODE_HOSTNAME="--hostname-override=192.168.0.221"
# API服务地址
KUBE_MASTER="--master=http://192.168.10.220:8080" [root@node1 ~]# cat /lib/systemd/system/kube-proxy.service
[Unit]
Description=Kubernetes Proxy
After=network.target
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-proxy
ExecStart=/opt/kubernetes/bin/kube-proxy \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_HOSTNAME} \
${KUBE_MASTER}
Restart=on-failure
[Install]
WantedBy=multi-user.target 启动
# systemctl daemon-reload
# systemctl enable kube-proxy
# systemctl restart kube-proxy

验证结果

[root@manager ~]# echo "export PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile
[root@manager ~]# source /etc/profile

验证结果

可以看到集群构建成功,下次介绍集群中的flannel网络部署

docker 集群 kubernetes 1.8 构建的更多相关文章

  1. Kubernetes(k8s) docker集群搭建

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

  2. VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群

    1. 下载CentOS 7官方minimal镜像 2. 安装VituralBox(Windows 10 64位) 3. 安装Git for windows(Windows 10 64位) 4. 安装V ...

  3. 使用Docker构建持续集成与自动部署的Docker集群

    为什么使用Docker " 从我个人使用的角度讲的话  部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...

  4. centos7上基于kubernetes的docker集群管理

    kubernetes和docker的作用这里就不作介绍了,直接进入主题. 本文的目的是搭建docker集群,并使用kubernetes管理它们. 文中的软件环境除了kubernetes和docker, ...

  5. docker集群管理之kubernetes

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

  6. docker swarm的应用----docker集群的构建

    一.docker安装 这里我们安装docker-ce 的18.03版本 yum    -y remove docker  删除原有版本 #安装依赖包 [root@Docker ~]# yum -y i ...

  7. k8s docker集群搭建

    一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器 ...

  8. Docker集群实验环境布署--swarm【1 架构说明】

    在读完<Docker技术入门与实践>这本书后,基本上已对Docker了有一些入门的理解,以及我们为什么要使用Docker 答:我们发现在实际工作中,通过openstack一旦把一个VM创建 ...

  9. 05 Docker集群/基础设施 - DevOps之路

    05 Docker集群/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi Docker的集群目前主流的 ...

随机推荐

  1. CUDA入门需要知道的东西

    CUDA刚学习不久,做毕业要用,也没时间研究太多的东西,我的博客里有一些我自己看过的东西,不敢保证都特别有用,但是至少对刚入门的朋友或多或少希望对大家有一点帮助吧,若果你是大牛请指针不对的地方,如果你 ...

  2. win10搭建FTP服务器

    下面就给大家讲解Win10搭建FTP服务器的详细操作方法. 1.首先,我们在Cortana中搜索控制面板并进入: 2.在控制面板-程序中,点击启用或关闭Windows功能: 3.在FTP服务器.Web ...

  3. hibernate系列之一

    通过自己不断的学习框架以及相关知识的学习,自己学会总结了学习路上遇到的一些问题以及疑惑,自己现在跟着相关的学习资料又进行了一些总结和实践,希望通过自己走过的学习之路能够帮助小伙伴们解决一些学习上问题或 ...

  4. C++ lambda 表达式 简介

    自己根据对lambda表达式的理解,做了一套ppt简单介绍

  5. 【jenkins】jenkins服务器与svn服务器时间不一致出现的问题

    问题描述: svn提交了一次更新包,到了jenkins提交更新的时候,第一次代码没有生效,然后重新提交了一次,第二次才生效. 问题排查: 1.首先第一反应比对了下两次更新的包文件是否一致,然后发现大小 ...

  6. PHP静态文件缓存

    ob_start(); 2 echo 'aaa'; 3 $string = ob_get_contents(); 4 file_put_contents('a.html', $string); 5 o ...

  7. Java课堂作业详解

    今天的Java课堂留下了一个作业:使用Eclipse编写一个程序,使输入的两个数进行加和,并且输出他们的和.对于这个题目,我们首先可以把它分解成为三个不同的小步骤 第一步就是输入这两个数,因为我们无需 ...

  8. ubuntu怎样打开终端

    1.首先在桌面任意空白处,按CTRL+ALT+T 2.方法二

  9. HDU 4628 Pieces(状态压缩+记忆化搜索)

    http://acm.hdu.edu.cn/showproblem.php?pid=4628 题意:给个字符窜,每步都可以删除一个字符窜,问最少用多少步可以删除一个字符窜分析:状态压缩+记忆化搜索  ...

  10. 【网易严选】iOS持续集成打包(Jenkins+fastlane+nginx)

    本文来自网易云社区 作者:孙娇 严选iOS客户端的现有打包方式是通过远程连接打包机执行脚本去打包,打完包会输出相应的ipa的二维码,扫一扫二维码可以安装,但是随着测试队伍的壮大,外包同学越来越多,在打 ...