本文共 3166 字,大约阅读时间需要 10 分钟。
宿主机采用CentOS7 7.3.1611搭建,配置如下:
通过YUM安装必要软件包:
yum install etcd kubernetes kubernetes-client kubernetes-master kubernetes-node flannel docker docker-devel docker-client docker-common -y
配置etcd集群,确保所有节点能够通信。以下为示例配置:
IP=$(ifconfig ens33 | grep inet | grep -v inet6 | awk '{print $2}')cat << EOF > /etc/etcd/etcd.conf[member]ETCD_NAME=${HOSTNAME}ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_WAL_DIR=""ETCD_SNAPSHOT_COUNT="10000"ETCD_HEARTBEAT_INTERVAL="100"ETCD_ELECTION_TIMEOUT="1000"ETCD_LISTEN_PEER_URLS="http://${IP}:2380,http://localhost:2380"ETCD_LISTEN_CLIENT_URLS="http://${IP}:2379,http://localhost:2379"ETCD_MAX_SNAPSHOTS="5"ETCD_MAX_WALS="5"ETCD_CORS=""[cluster]ETCD_INITIAL_ADVERTISE_PEER_URLS="http://${IP}:2380"ETCD_INITIAL_CLUSTER="kube-master=http://192.168.20.128:2380,kube-node1=http://192.168.20.131:2380,kube-node2=http://192.168.20.132:2380,kube-node3=http://192.168.20.134:2380,kube-node4=http://192.168.20.135:2380"ETCD_INITIAL_CLUSTER_STATE="new"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"ETCD_ADVERTISE_CLIENT_URLS="http://${IP}:2379"EOF
启动并启用等cd服务:
systemctl start etcdsystemctl enable etcd
配置kube-apiserver,指定相关参数:
cat << EOF > /etc/kubernetes/apiserverKUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"KUBE_API_PORT="--port=8080"KUBELET_PORT="--kubelet-port=10250"KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.20.128:2379"KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.17.0.0/24"KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"KUBE_API_ARGS=""EOF
配置kubelet,确保节点可连接到master:
cat << EOF > /etc/kubernetes/kubeletKUBELET_ADDRESS="--address=0.0.0.0"KUBELET_PORT="--port=10250"KUBELET_HOSTNAME="--hostname-override=${HOSTNAME}"KUBELET_API_SERVER="--api-servers=http://192.168.20.128:8080"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"EOF
在Master节点运行:
for SERVICES in kube-apiserver kube-controller-manager kube-scheduler flanneld do systemctl restart $SERVICES systemctl enable $SERVICES done
在Node节点运行:
for SERVICES in kube-proxy docker flanneld kubelet do systemctl restart $SERVICES systemctl enable $SERVICES done
Flannel用于实现Docker容器之间跨主机通信,配置步骤如下:
在Etcd集群中创建网络:
etcdctl get /coreos.com/network/config# 并根据需要添加或修改网络配置
配置flanneld客户端:
cat << EOF > /etc/sysconfig/flanneldFLANNEL_ETCD_ENDPOINTS="http://192.168.20.128:2379"FLANNEL_ETCD_PREFIX="/coreos.com/network"FLANNEL_OPTIONS=""EOF
启动相关服务:
在Master节点运行:
for SERVICES in kube-apiserver kube-controller-manager kube-scheduler flanneld do systemctl restart $SERVICES systemctl enable $SERVICES done
在Node节点运行:
for SERVICES in kube-proxy docker flanneld kubelet do systemctl restart $SERVICES systemctl enable $SERVICES done
在Master节点执行:
kubectl get nodes
观察是否有节点返回,若所有节点显示"Ready",则部署完成。
通过以上步骤,可以完成Kubernetes集群的部署,并通过Flannel实现节点间的网络通信。部署完成后,可根据实际需求调整配置参数,如调整log级别或修改容器权限等。
转载地址:http://loryk.baihongyu.com/