一.规划
1.系统
centos 7

2.ip规划及功能分配
192.168.2.24 master
192.168.2.24 etcd
192.168.2.25 node1(即minion)
192.168.2.26 node2(即minion)

二.基本环境配置
1.关闭防火墙
#systemctl stop firewalld.service
#systemctl disable firewalld.service

2.永久关闭SELinux
#vi /etc/selinux/config
SELINUX=disabled

3.重启
#reboot

4.安装NTP
为了让各个服务器的时间保持一致,还需要为所有的服务器安装NTP:
# yum -y install ntp
# systemctl start ntpd
# systemctl enable ntpd

三.Master配置及安装相应软件
1.安装和配置etcd
etcd是KV存储系统,用于集群的共享配置和服务发现

1.1 安装:
#yum install etcd

1.2 修改etcd配置文件
修改/etc/etcd/etcd.conf中的部分属性
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379"
PS:其中etcd表示etcd服务器主机名

1.3 运行etcd并配置开机启动
#systemctl start etcd
#systemctl enable etcd

1.4 etcd中的网络配置
etcdctl -C //192.168.2.24:2379 set /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

PS:其中网络号172.17.0.0/16与node中的docker中的docker0网络一致(若不一致,可修改docker0网络或者配置上述etcd网络);atomic.io与下面的Flannel配置中的FLANNEL_ETCD_PREFIX对应

2.安装和配置kubernetes-master
2.1 安装
#yum install kubernetes-master
2.2 配置apiserver
#vi /etc/kubernetes/apiserver
-------------------
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
------------------

PS:
测试时需要把KUBE_ADMISSION_CONTROL中的SecurityContextDeny和ServiceAccount去掉,这是权限相关的

否则会出现错误retry after the token is automatically created and added to the service account

2.3 配置全局配置文件
#vi /etc/kubernetes/config
----------------------
KUBE_MASTER="--master=http://master:8080"
----------------------
2.4 启动master服务及开机启动
#systemctl enable kube-apiserver kube-scheduler kube-controller-manager
#systemctl start kube-apiserver kube-scheduler kube-controller-manager

2.5 测试master服务
#curl master:8080
返回如下数据:
{
"paths": [
"/api",
"/api/v1",
"/apis",
"/apis/apps",
"/apis/apps/v1beta1",
"/apis/authentication.k8s.io",
"/apis/authentication.k8s.io/v1beta1",
"/apis/authorization.k8s.io",
"/apis/authorization.k8s.io/v1beta1",
"/apis/autoscaling",
"/apis/autoscaling/v1",
"/apis/batch",
"/apis/batch/v1",
"/apis/batch/v2alpha1",
"/apis/certificates.k8s.io",
"/apis/certificates.k8s.io/v1alpha1",
"/apis/extensions",
"/apis/extensions/v1beta1",
"/apis/policy",
"/apis/policy/v1beta1",
"/apis/rbac.authorization.k8s.io",
"/apis/rbac.authorization.k8s.io/v1alpha1",
"/apis/storage.k8s.io",
"/apis/storage.k8s.io/v1beta1",
"/healthz",
"/healthz/ping",
"/healthz/poststarthook/bootstrap-controller",
"/healthz/poststarthook/extensions/third-party-resources",
"/healthz/poststarthook/rbac/bootstrap-roles",
"/logs",
"/metrics",
"/swaggerapi/",
"/ui/",
"/version"
]
}

四.node(minion)安装及配置
1.安装docker
#yum install docker

2.安装及配置flannel
flannel:网络规划工具,统一分配集群Docker容器的虚拟IP,并实现服务之间通信
2.1 安装
#yum install flannel

2.2 配置
#vi /etc/sysconfig/flanneld

--------------------
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
--------------------

2.3 注意
yum安装的flanneld是0.7.1,存在问题,无法启动,启动会报错:
panic: runtime error: invalid memory address or nil pointer dereference

我们用0.8的可执行文件替换
版本选择参见:https://github.com/coreos/flannel/releases

#wget https://github.com/coreos/flannel/releases/download/v0.8.0/flannel-v0.8.0-linux-amd64.tar.gz
#tar xvf flannel-v0.8.0-linux-amd64.tar.gz
#mv /usr/bin/flanneld /usr/bin/flanneld.bak
#cp flanneld /usr/bin

  

2.4 如果docker有启动,要停止docker

2.5 如果存在docker0这个ip地址,要先删除

#ip link delete docker0

  

2.6 启动

#systemctl deamon-reload
#systemctl enable flanneld
#systemctl start flanneld

  

2.7 启动docker

#systemctl start docker

  

2.8 查看
#ifconfig

应该可以看到:

flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
inet 10.1.32.0 netmask 255.255.0.0 destination 10.1.32.0
inet6 fe80::2987:ef4:fdde:30a7 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 78 bytes 5435 (5.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31 bytes 3286 (3.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1472
inet 10.1.32.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::42:2eff:fec1:7d9e prefixlen 64 scopeid 0x20<link>
ether 02:42:2e:c1:7d:9e txqueuelen 0 (Ethernet)
RX packets 9322 bytes 1046496 (1021.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8939 bytes 2183012 (2.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  

其中docker0是flannel0的子网

3.安装和配置kubernetes-node

3.1 安装kubernetes-node
#yum install kubernetes-node

3.2 配置全局文件
#vi /etc/kubernetes/config
--------------------------------------------
KUBE_MASTER="--master=http://master:8080"
---------------------------------------------

3.3 配置kubelet组件
#vi /etc/kubernetes/kubelet
--------------------
KUBELET_HOSTNAME="--hostname-override=node1"
KUBELET_API_SERVER="--api-servers=http://master:8080"
---------------------

PS:
node1 为规划的节点上的局域网ip

3.4 配置开机启动并启动服务
#systemctl enable kubelet kube-proxy
#systemctl start kubelet kube-proxy

五.master上查看节点:
#kubectl get nodes

如出现:
No resources found.

请查看master和node上的firewalld是否关闭,selinux是否关闭

正常应该出现:
NAME STATUS AGE
node1 Ready 1m
node2 Ready 1m

kubernetes 环境搭建的更多相关文章

  1. Docker Kubernetes 环境搭建

    Docker Kubernetes 环境搭建 节点规划 版本 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 etcd存储版本:etcd-3. ...

  2. 傲视Kubernetes(二):Docker镜像搭建与本地Kubernetes环境搭建

    主要内容: 1.Docker与Kubernetes的关系 2.SpringBoot微服务的Docker镜像创建 3.Kubernetes本地环境搭建 一.Docker与Kubernetes的关系 在说 ...

  3. 二、kubernetes环境搭建

    主要内容 1.环境准备(2主机) 2.安装流程 3.问题分析 4.总结 环境配置(2主机) 系统:CentOS 7.3 x64 网络:局域网(VPC) 主机: master:172.16.0.17 m ...

  4. 三、kubernetes环境搭建(实践)

    一.目前近况 docker 版本 K8S支持 18.06的 二.安装docker #1.配置仓库 sudo yum install -y yum-utils device-mapper-persist ...

  5. kubernetes 环境搭建(ubuntu16.04)

    通过kubeadm安装kubernetes的教程:1: 首先在每台机器上安装: docker(1.12), kubeadm(1.6), kubectl, kubelet, kubernetes-cni ...

  6. 【爬坑系列】之kubernetes环境搭建:二进制安装与镜像安装

    准备: 网上教如何编译与安装kubernetes的教程很多,需要提前准备的也很多,比如关闭selinux,防火墙啦....但有一点一定要注意,编译kubernetes源码时要求有2G内存,这个可是实打 ...

  7. kubernetes环境搭建 -k8s笔记(一)

    一.环境准备 1.硬件及版本信息: cpu&内存:2核心,2G 网络: 每台vm主机2块网卡,一块NAT用于上网,别一块配置成 "仅主机模式",网段为192.168.100 ...

  8. kubernetes环境搭建

    两台服务器 centos-master  172.16.120.189 centos-minion  172.16.120.190 master上运行etcd, kube-apiserver, kub ...

  9. kubernetes 单节点和多节点环境搭建

    kubernetes单节点环境搭建: 1.在VMWare Workstation中建立一个centos 7虚拟机.虚拟机的配置尽量调大一些 2.操作系统安装完成后,关闭centos 自带的防火墙服务 ...

随机推荐

  1. python正则表达式中的分组 group

    维基百科:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C ...

  2. [CF600E]Dsu on tree

    题意:树上每个点都有颜色,称一个颜色占领一棵子树,当且仅当没有别的颜色在这棵子树内的数量比它多.求所有子树的占领颜色之和.题解:最显然的是DFS序+主席树或莫队,这里使用Dsu on tree. 每次 ...

  3. 【拓扑排序】【DFS】Painting A Board

    [poj1691]Painting A Board Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3902   Accept ...

  4. 【推导】Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) B. Arpa and an exam about geometry

    题意:给你平面上3个不同的点A,B,C,问你能否通过找到一个旋转中心,使得平面绕该点旋转任意角度后,A到原先B的位置,B到原先C的位置. 只要A,B,C构成等腰三角形,且B为上顶点.那么其外接圆圆心即 ...

  5. bootstrapTable定位行固定滚动条

    写在前面: 当页面table列表数据有修改后,用户需要再次回到修改的行位置. 1.当修改行数据后,table刷新,行数据位置前后不发生改变 ,可使用下面这种方法: /*获取当前滚动条的位置*/ var ...

  6. 抽象类(abstract class)和接口(interface)的异同

    抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类. 接口比抽象类更加抽象,因 ...

  7. Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和

    B. Alice, Bob, Two Teams 题目连接: http://www.codeforces.com/contest/632/problem/B Description Alice and ...

  8. 最小生成树(Prime算法)

    最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城 ...

  9. c#版 mqtt 3.1.1 client 实现

    c# 版 mqtt 3.1.1 client http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html 上面为 3.1.1 协议报文 一 ...

  10. <摘录>MBR和分区表

    MBR 意思是主引导记录.位于硬盘的0柱面.0磁头.1扇区. MBR 大小为1个扇区,512字节. 下面是MBR的结构: 偏移                                    构 ...