Centos7部署Kubernetes集群

目录

环境准备

物理机操作系统:CentOS 7.3.1611 64 位

uname -a
# Linux localhost.localdomain 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/redhat-release
# CentOS Linux release 7.3.1611 (Core)

三台机器配置(Master/etcd/registry + Node1 + Node2):

节点及功能主机名IP
Master、etcd、registryK8s-master10.0.251.148
Node1K8s-node-110.0.251.153
Node2K8s-node-210.0.251.155

设置主机名

hostnamectl --static set-hostname k8s-master
hostnamectl --static set-hostname k8s-node-1
hostnamectl --static set-hostname k8s-node-2

设置 hosts

echo '10.0.251.148 k8s-master
10.0.251.148 etcd
10.0.251.148 registry
10.0.251.153 k8s-node-1
10.0.251.155 k8s-node-2' >> /etc/hosts

关闭防火墙

systemctl disable firewalld.service
systemctl stop firewalld.service

部署 etcd

yum install etcd -y

编辑 /etc/etcd/etcd.conf,修改以下配置:

ETCD_NAME=master
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379,http://etcd:4001"

启动并验证:

systemctl start etcd
etcdctl set testdir/testkey0 0
etcdctl get testdir/testkey0
# 0
etcdctl -C http://etcd:4001 cluster-health
# member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
# cluster is healthy

部署 Master

安装 Docker

yum install docker -y

配置 Docker (/etc/sysconfig/docker):

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
# 允许从 registry 中拉取镜像
OPTIONS='--insecure-registry registry:5000'

启动 Docker:

chkconfig docker on
service docker start

安装 Kubernetes

yum install kubernetes -y

配置 Master 组件

修改 /etc/kubernetes/apiserver

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

修改 /etc/kubernetes/config

KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://k8s-master:8080"

启动 Master 服务:

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

部署 Node

安装 Docker 和 Kubernetes

同 Master 步骤。

配置 Node 组件

修改 /etc/kubernetes/config(同 Master)。

修改 /etc/kubernetes/kubelet

KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=k8s-node-1"
KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

启动 Node 服务:

systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy.service
systemctl start kube-proxy.service

查看集群状态

kubectl -s http://k8s-master:8080 get node
# NAME           STATUS    AGE
# k8s-node-1     Ready     3m
# k8s-node-2     Ready     16s

配置网络覆盖层 - Flannel

安装 Flannel

yum install flannel -y
# 版本:0.0.5

配置 Flannel

编辑 /etc/sysconfig/flanneld

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

配置 etcd 中的 Flannel key

etcdctl mk /atomic.io/network/config '{ "Network": "10.0.0.0/16" }'
# { "Network": "10.0.0.0/16" }

启动 Flannel 并重启其他服务

Master 上执行:

systemctl enable flanneld.service
systemctl start flanneld.service
service docker restart
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service

Node 上执行:

systemctl enable flanneld.service
systemctl start flanneld.service
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service

#kubernetes #docker #systemd #iptables #selinux