部署分布式kubernetes(v1.3.1)-centos7

本文详细介绍如何从零开始搭建Kubernetes集群,包括Master节点与Node节点的配置过程,以及解决因网络限制导致的pause镜像拉取问题。

master:172.16.0.10,centos7,(etcd ,kube-apiserver,kube-controller-manager, kube-scheduler )

node01:192.168.12.175 172.16.0.8,centos7,(docker,kubelet,kube-proxy)

node02:172.16.0.9,centos7,(docker,kubelet,kube-proxy)

软件版本:

etcd:v2.3.7

k8s :1.3.0

docker:1.10.3

pause:3.0

kubernetes运行Pods需要伴随运行一个叫 pause的镜像。但是Google pause这个镜像被墙了。

在境外docker服务器执行 docker pull 命令下载镜像

gcr.io/google_containers/pause:latest

再用导出镜像

docker save -o pause.tar gcr.io/google_containers/pause
gzip pause.tar

最后把这个包放到 kubernetes 环境所有的 docker 服务器上

 docker load -i pause.tar.gz

1.部署master主机

1.1安装etcd:

yum install -y etcd


rpm -qc etcd

[root@master yum.repos.d]# grep -v ^# /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://172.16.0.10:2379"

systemctl enable etcd.service
systemctl start etcd.service
systemctl status etcd.service


1.2部署k8s-master组件(apiserver+controller-manager+scheduler)

yum install -y kubernetes-master


[root@master yum.repos.d]# cd /etc/kubernetes/
[root@master kubernetes]# ll
total 16
-rw-r--r-- 1 root root 767 Dec 16 00:59 apiserver
-rw-r--r-- 1 root root 655 Dec 16 00:59 config
-rw-r--r-- 1 root root 189 Dec 16 00:59 controller-manager
-rw-r--r-- 1 root root 111 Dec 16 00:59 scheduler


[root@master kubernetes]# grep -v "^#" /etc/kubernetes/config |grep -v "^$"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.16.0.10:8080"

[root@master kubernetes]# grep -v "^#" /etc/kubernetes/apiserver  |grep -v "^$"
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.12.174: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=""

#注意,--admission-control参数里没有ServiceAccount

[root@master kubernetes]# grep -v "^#" /etc/kubernetes/controller-manager
KUBE_CONTROLLER_MANAGER_ARGS=""

systemctl enable kube-apiserver.service kube-controller-manager.service kube-scheduler.service 

systemctl start kube-apiserver.service kube-controller-manager.service kube-scheduler.service

systemctl status kube-apiserver.service kube-controller-manager.service kube-scheduler.service



2.部署node主机

2.1部署k8s-node组件

修改hosts文件

172.16.0.8 node
172.16.0.9 node2

yum install kubernetes-node -y




centos7系统采用open vswitch实现不同物理服务器/虚拟机上的docker容器互联。

环境:

node01:172.16.0.8,docker容器内网地址段:172.17.1.0/24

node02:172.16.0.9,docker容器内网地址段:172.17.2.0/24

chkconfig docker on

安装openvswitch rpm包

 rpm -ivh http://mirror.centos.org/centos/7/cloud/x86_64/openstack-mitaka/common/openvswitch-2.5.0-2.el7.x86_64.rpm

systemctl start openvswitch.service

chkconfig openvswitch on  

4.node01和node02 配置OVS Bridge及GRE

规划:

node01:容器内地址段172.17.1.0/24,新网桥:kbr0,GRE:gre0

node02:容器内地址段172.17.2.0/24,新网桥:kbr0,GRE:gre0

4.1 node01:部署

开启ip转发:cat /proc/sys/net/ipv4/ip_forward,显示为1,表示开启。

ip转发开启方法:

echo 1 > /proc/sys/net/ipv4/ip_forward (立即生效)

vi /etc/sysctl.conf添加

net.ipv4.ip_forward = 1                 (重启生效)

ovs-vsctl add-br obr0

ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.0.9

service docker stop
brctl addbr kbr0
brctl addif kbr0 obr0
ip link set dev docker0 down
ip link del dev docker0

[root@node ~]# cat /etc/sysconfig/network-scripts/route-eth0
172.17.2.0/24 via 172.16.0.8 dev eth0

vi /etc/sysconfig/network-scripts/ifcfg-kbr0

DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no

 


[root@node ~]# cat /etc/sysconfig/docker |grep OPTIONS
OPTIONS='--selinux-enabled --log-driver=journald -b=kbr0'

4.2 node02:部署(重启上述部署,注意修改相应的地址)

echo 1 > /proc/sys/net/ipv4/ip_forward (立即生效)

vi /etc/sysctl.conf添加

net.ipv4.ip_forward = 1                 (重启生效)

ovs-vsctl add-br obr0

ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.0.8

service docker stop
brctl addbr kbr0
brctl addif kbr0 obr0
ip link set dev docker0 down
ip link del dev docker0

[root@node ~]# cat /etc/sysconfig/network-scripts/route-eth0
172.17.1.0/24 via 172.16.0.8 dev eth0

[root@node ~]# cat /etc/sysconfig/docker |grep OPTIONS
OPTIONS='--selinux-enabled --log-driver=journald -b=kbr0'

vi /etc/sysconfig/network-scripts/ifcfg-kbr0

DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.2.1
NETMASK=255.255.255.0
GATEWAY=172.17.2.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no

node01:ping 对端node02主机及node02容器网关172.17.2.1

node02:ping 即对端node01主机及node01容器网关 172.17.1.1






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值