k8s集群搭建
基于CentOS7 k8s集群部署
注意 均同时安装
Docker Version: 1.13.1
Kubernetes Version: 1.5.2
Etcd Version: 3.2.22
Flanneld Version: 0.7.1
环境:
| 节点 | 主机名 | IP |
|---|---|---|
| Master | kmaster | 192.168.1.90 |
| Node1 | knode1 | 192.168.1.91 |
| Node2 | knode2 | 192.168.1.92 |
Master&&Node
关闭防火墙1
2systemctl stop firewalld
systemctl disable firewalld
关闭selinux1
2sed -i 's/enforcing/disabled/g' /etc/selinux/config
reboot
基础服务安装1
2
3
4
5
6
7
8
9
10
11
12
13yum install -y net-tools wget vim ntpdate docker kubernetes flannel
systemctl enable ntpdate
systemctl start ntpdate
systemctl enable docker
systemctl start docker
systemctl enable flanneld
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate ntp.uiuc.edu
cat <<EOF > /etc/hosts
192.168.1.90 kmaster
192.168.1.91 knode1
192.168.1.92 knode2
EOF
Master
修改主机名1
hostnamectl --static set-hostname kmaster
安装etcd服务1
yum -y install etcd
修改etcd配置文件1
2
3
4
5
6
7
8cat /etc/etcd/etcd.conf | grep -v "^#"
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_NAME="master"
ETCD_ADVERTISE_CLIENT_URLS="http://kmaster:2379,http://kmaster:4001"
systemctl enable etcd
systemctl start etcd
测试1
2etcdctl -C http://kmaster:4001 cluster-health
etcdctl -C http://kmaster:2379 cluster-health
修改k8s apiserver文件1
2
3
4
5
6
7
8cat /etc/kubernetes/apiserver | grep -v "^#"
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.1.90:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
KUBE_API_ARGS=""
修改k8s config文件1
2
3
4
5cat /etc/kubernetes/config | grep -v "^#"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.1.90:8080"
k8s服务1
2systemctl enable kube-apiserver kube-controller-manager kube-scheduler
systemctl start kube-apiserver kube-controller-manager kube-scheduler
修改flanneld config文件1
2
3cat /etc/sysconfig/flanneld | grep -v "^#"
FLANNEL_ETCD_ENDPOINTS="http://192.168.1.90:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
添加网络1
etcdctl mk //atomic.io/network/config '{"Network":"172.8.0.0/16"}'
flanneld服务1
2
3systemctl enable flanneld
systemctl start flanneld
for SERVICES in docker kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES ; done
Node1
修改主机名1
hostnamectl --static set-hostname knode1
修改k8s config文件1
2
3
4
5cat /etc/kubernetes/config | grep -v "^#"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.1.90:8080"
修改k8s kubelet文件1
2
3
4
5
6cat /etc/kubernetes/kubelet | grep -v "^#"
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=192.168.1.91"
KUBELET_API_SERVER="--api-servers=http://192.168.1.90:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
k8s服务1
2systemctl enable kubelet kube-proxy
systemctl start kubelet kube-proxy
修改flanneld config文件1
2
3cat /etc/sysconfig/flanneld | grep -v "^#"
FLANNEL_ETCD_ENDPOINTS="http://192.168.1.90:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
flanneld服务1
2
3systemctl enable flanneld
systemctl start flanneld
systemctl restart kube-proxy kubelet docker
Node2
修改主机名1
hostnamectl --static set-hostname knode2
修改k8s config文件1
2
3
4
5cat /etc/kubernetes/config | grep -v "^#"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.1.90:8080"
修改k8s kubelet文件1
2
3
4
5
6cat /etc/kubernetes/kubelet | grep -v "^#"
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=192.168.1.92"
KUBELET_API_SERVER="--api-servers=http://192.168.1.90:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
k8s服务1
2systemctl enable kubelet kube-proxy
systemctl start kubelet kube-proxy
修改flanneld config文件1
2
3cat /etc/sysconfig/flanneld | grep -v "^#"
FLANNEL_ETCD_ENDPOINTS="http://192.168.1.90:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
flanneld服务1
2
3systemctl enable flanneld
systemctl start flanneld
systemctl restart kube-proxy kubelet docker
测试
状态ready即可1
2kubectl get node
kubectl -s http://kmaster:8080 get node
如果docker容器无法ping通则1
2
3
4
5iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F #可不运行
iptables -L -n #可不运行