k8s最简单的搭建方式,使用yum搭建k8s集群
1、环境准备基于CentOS-7-x86_64-Minimal-2009.iso,使用VMware构建3个linux环境master: 10.1.14.11node1:10.1.14.15node2:10.1.14.16三台机器前期工作准备关闭防火墙服务:systemctl stop firewalldsystemctl disable firewalld关闭selinux:vi /etc/sel
·
1、环境准备
基于CentOS-7-x86_64-Minimal-2009.iso,使用VMware构建3个linux环境
master: 10.1.14.11
node1: 10.1.14.15
node2: 10.1.14.16
三台机器前期工作准备
关闭防火墙服务:
systemctl stop firewalld
systemctl disable firewalld
关闭selinux:
vi /etc/selinux/config
SELINUX=disabled #修改
Kubernetes集群组件说明:
– etcd 一个高可用的K/V键值对存储和服务发现系统 #master
– kube-apiserver 提供kubernetes集群的API调用 #master
– kube-controller-manager 确保集群服务 #master
– kube-scheduler 调度容器,分配到Node #master
– kubelet 在Node节点上按照配置文件中定义的容器规格启动容器 #node
– kube-proxy 提供网络代理服务,将service与pod打通 #node
– flannel 实现夸主机的容器网络的通信 #node
2、master安装部署
yum安装etcd、kubernetes-master:
yum install etcd kubernetes-master -y
配置etcd文件
vi /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
配置apiserver文件
vi /etc/kubernetes/apiserver
KUBE_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://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
KUBE_API_ARGS=""
启动etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服务,并设置开机启动
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl start $SERVICES;
systemctl enable $SERVICES;
systemctl status $SERVICES;
done
在etcd中定义flannel网络
etcdctl mk /atomic.io/network/config '{"Network":"172.40.0.0/16"}'
#可以删除这个网段
etcdctl rm /atomic.io/network/config
PrevNode.Value: {"Network":"172.40.0.0/16"}
3、node节点安装部署
这里以node1为演示,其中node2是配置方式是一样的,修改一下ip即可
yum安装flannel、kubernetes-node
yum install flannel kubernetes-node -y
为flannel网络指定etcd服务
vi /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://10.1.14.11:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network" #和master配置的etcd要一致
配置kubernetes
vi /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://10.1.14.11:8080"
配置kubelet
vi /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=10.1.14.15"
KUBELET_API_SERVER="--api-servers=http://10.1.14.11:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
所有Node节点上启动flanneld、docker、kube-proxy、kubelet服务,并设置开机启动
for SERVICES in flanneld docker kube-proxy kubelet; do
systemctl start $SERVICES;
systemctl enable $SERVICES;
systemctl status $SERVICES;
done
这里强调一下,一定要注意etcd—->flannel—–>docker的先后启动顺序,否则会导致pod里边的ip会和其他node节点的pod不在一个网段,通信就有问题
4、验证集群状态
验证集群是否安装成功
master执行如下命令:
kubectl get node
NAME STATUS AGE
10.1.14.15 Ready 3m
10.1.14.16 Ready 3m
查看网络情况
etcdctl ls -r | grep subnets
/atomic.io/network/subnets
/atomic.io/network/subnets/172.40.7.0-24
/atomic.io/network/subnets/172.40.3.0-24
etcdctl get /atomic.io/network/subnets/172.40.7.0-24
{"PublicIP":"10.1.14.15"}
etcdctl get /atomic.io/network/subnets/172.40.3.0-24
{"PublicIP":"10.1.14.16"}
更多推荐
已为社区贡献7条内容
所有评论(0)