1 条件准备:
IP:172.16.20.17 Master Centos7 内核3.10 内存8G 硬盘150G
IP:172.16.20.18 Node Centos7 内核3.10 内存8G 硬盘50G
IP:172.16.20.19 Node Centos7 内核3.10 内存8G 硬盘50G
2 KubernetesMaster配置
关闭防火墙、SELinux
systemctlstop firewalld
systemctldisable firewalld
setenforce0
2.1 CentOS yum代理与yum源设置
# cd /etc/
# nano yum.conf
在文件中增加
proxy=http://172.16.20.20:3128
然后
# cd /etc/yum.repos.d
# mv CentOS-Base.repo CentOS-Base.repo.bak
# vim CentOS-Base.repo 写入如下内容
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client andthe
# update status of each mirror to pick mirrors that are updated toand
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you cantry the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
然后
# yum clean all
# yum repolist 查看163源
# yum makecache
2.2 安装docker、etcd、Kubernetes-master服务
yum install -y etcd docker kubernetes-master
配置docker代理,下载基础镜像
在/etc/sysconfig/docker文件中增加代理设置
http_proxy=http://172.16.20.20:3128
重启docker服务
# systemctl restart docker
2.3 搭建私有仓库
下载仓库镜像:
# dockerpull docker.io/registry
vim /etc/docker/daemon.json
写入
{"insecure-registries":["172.16.20.17:5000"]
}
vim /etc/sysconfig/docker
注释代理
#http_proxy=http://172.16.20.20:3128
systemctl restart docker
docker run –d –p 5000:5000 docker.io/registry
验证仓库
docker tag docker.io/registry 172.16.20.17:5000/registry:latest
docker push 172.16.20.17:5000/registry:latest
push成功则部署仓库成功。
将基础镜像上传至仓库(基础镜像需要自己先拿到master虚拟机)
docker push 172.16.20.17:5000/alpine:tomcat
docker push 172.16.20.17:5000/alpine:vpn
docker push 172.16.20.17:5000/phantomjs:tomcat
docker push 172.16.20.17:5000/rhel7/pod-infrastructure:latest
然后打标签:
docker tag 172.16.20.17:5000/alpine:tomcat alpine:tomcat
。。。依次类推
2.4 配置etcd服务
a) 修改etcd配置文件/etc/etcd/etcd.conf
ETCD_NAME=default
ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
ETCD_ADVERTISE_CLIENT_URLS=http://localhost:2379
b) 更新etcd服务文件,重启服务
# systemctl restart etcd
2.5 在etcd里定义flannel网络地址,供节点使用
在master中执行:
etcdctl mk /coreos.com/network/config'{"Network":"172.17.0.0/16"}'
2.6 修改apiserver配置文件
a) 修改apiserver配置文件
vim /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0"
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=NamespaceAutoProvision,LimitRanger,ResourceQuota"
KUBE_API_ARGS="--service-node-port-range=80-35535"
2.7 启动Master服务,创建启动文件,关闭文件
Master上启动kube-apiserver kube-controller-manager kube-scheduler服务
创建Master服务启动文件start-k8s-master.sh
for SERVICES in etcd kube-apiserverkube-controller-manager kube-scheduler;
do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
加执行权限:chmod +x start-k8s-master.sh
启动master
./start-k8s-master.sh
3 Kubernetes node配置
关闭防火墙、SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
3.1 安装docker、flannel、kubernetes-node服务
yum install -y flannel docker kubernetes-node
3.2 在hosts添加k8s-master及k8s-slave*地址
在hosts文件添加配置,/etc/hosts
172.16.20.17 k8s-master
172.16.20.18 slave-1
172.16.20.19 slave-2
3.3 配置flanneld
修改flanneld配置nano /etc/sysconfig/flanneld
FLANNEL_ETCD=http://k8s-master:2379
FLANNEL_ETCD_KEY="/coreos.com/network"
FLANNEL_OPTIONS="--logtostderr=false--log_dir=/var/log/flannel/ --iface=ens3"
3.4 配置kube-proxy
修改Kube-proxy 默认配置
nano /etc/kubernetes/config
KUBE_MASTER="--master=http://k8s-master:8080"
3.5 配置kubelet
修改各节点的kubelet配置
nano /etc/kubernetes/kubelet
节点1
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
# change the hostname to this host’s IP address
KUBELET_HOSTNAME="--hostname_override=k8s-slave"
KUBELET_API_SERVER="--api_servers=http://k8s-master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
节点2
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
# change the hostname to this host’s IP address
KUBELET_HOSTNAME="--hostname_override=k8s-slave-2"
KUBELET_API_SERVER="--api_servers=http://k8s-master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
3.6 修改docker启动参数
修改/usr/lib/systemd/system/docker.service
使docker服务启动时应用flannel网络
添加
EnvironmentFile=/run/flannel/subnet.env
更改存储方式为overlay,提高读写性能 #可选操作
修改/etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS="--storage-driver=overlay"
3.7 启动Node服务,创建启动文件,关闭文件
Slvae上启动kube-proxy, kubelet, flanneld和docker服务
创建Node服务启动文件start-node.sh
$ for SERVICES in kube-proxy kubelet flanneld docker;
do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done