Kubernetes——虚拟机上k8s集群搭建
1. 虚拟机上搭建分布式基础环境(1)安装准备Windows10 64位,vmware workstation 12、CentOS-7-x86_64-DVD-1611.iso(2)安装过程1)安装VMware按步骤安装。2)安装CentOS按步骤安装。注意设置用户密码。3)开启安装成功的虚拟机,配置网络。联网,配置静态IP,静态IP为192.168.5.101。可以根据...
虚拟机上k8s集群搭建
1. 虚拟机上搭建分布式基础环境
(1) 安装准备
Windows10 64位,vmware workstation 12、CentOS-7-x86_64-DVD-1611.iso
(2) 安装过程
1) 安装VMware
按步骤安装。
2) 安装CentOS
按步骤安装。注意设置用户密码。
3) 开启安装成功的虚拟机,配置网络。
联网,配置静态IP,静态IP为192.168.5.101。可以根据自己需要配置一些基础环境,比如JDK等。
4) 克隆虚拟机
刚才已经创建了一台虚拟机,并配好了静态IP等,接下来可以根据VMware的克隆功能快速扩充新的虚拟机,克隆前先将电源关闭。
首先右键选择拍摄快照,之后在克隆时克隆源选择“现有快照”,之后修改虚拟机名称,按步骤进行克隆。
原虚拟机名称为master,新克隆的两台名称分别为node1和node2,至此已经创建了三台虚拟机。node1的静态IP设为192.168.5.102,node2的静态IP设为192.168.5.103。至此通过VMware搭建分布式基础环境就基本完成了。
参考博客:https://blog.csdn.net/cndmss/article/details/80149952
- 网络连接失败
解决方案:克隆虚拟机之后修改Mac地址和IP地址,最后重启网络。
【问题】
[root@localhost Desktop]# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 258 bytes 22412 (21.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 258 bytes 22412 (21.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost Desktop]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-eno16777736 ifdown-ppp ifup-eth ifup-sit
ifcfg-lo ifdown-routes ifup-ippp ifup-Team
ifdown ifdown-sit ifup-ipv6 ifup-TeamPort
ifdown-bnep ifdown-Team ifup-isdn ifup-tunnel
ifdown-eth ifdown-TeamPort ifup-plip ifup-wireless
ifdown-ippp ifdown-tunnel ifup-plusb init.ipv6-global
ifdown-ipv6 ifup ifup-post network-functions
ifdown-isdn ifup-aliases ifup-ppp network-functions-ipv6
ifdown-post ifup-bnep ifup-routes
[root@localhost network-scripts]# vi ifcfg-eno16777736
[root@localhost network-scripts]# service network restart
Restarting network (via systemctl): Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for details.
[FAILED]
[root@localhost network-scripts]# vi ifcfg-eno16777736
[root@localhost network-scripts]# service network restart
Restarting network (via systemctl): [ OK ]
[root@localhost network-scripts]#
2. 部署kubernetes
(1) 部署规划
这里我用3台虚拟机搭建一个简单的集群:
192.168.5.101 # master节点(etcd,kubernetes-master)
192.168.5.102 # node1节点(etcd,kubernetes-node,docker,flannel)
192.168.5.103 # node2节点(etcd,kubernetes-node,docker,flannel)
(2)部署过程
- 各个节点安装docker
两种方法:
方法(1)yum源安装:
1)更新yum源
$ yum update
2)添加yum仓库【repo文件是Fedora中yum源的配置文件】
$ tee /etc/yum.repos.d/docker.repo <<EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
3)安装docker包
$ sudo yum install docker-engine
4)启动docker服务
$ sudo service docker start
5)测试是否安装成功
$ sudo docker run hello-world
6)配置docker开机自启动
$ sudo systemctl enable docker.service
方法(2)使用脚本安装
1)更新yum源
$ sudo yum update
2)下载的脚本可以添加docker.repo到仓库并安装docker
$ curl -fsSL https://get.docker.com/ | sh
- 启动docker服务
$ sudo service docker start
4)测试docker是否安装成功
$ sudo docker run hello-world
- 创建docker用户组
默认docker只能由root用户操作,或者是其它用户sudo操作。
1) 添加docker用户组
$ sudo groupadd docker
- 向docker用户组添加普通用户
$ sudo usermod -aG docker your_username
3)直接用普通用户使用docker
$ docker run hello-world
- Master和node安装k8s
1)Master节点上安装:
yum install kubernetes-master etcd flannel -y
2)两个Node节点上分别安装:
yum install kubernetes-node etcd flannel -y
- etcd集群配置
master修改etcd配置文件:
[root@s1]# cat /etc/etcd/etcd.conf |grep -v "^#"
ETCD_NAME=etcd1
ETCD_DATA_DIR="/var/lib/etcd/etcd1.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.5.101:2380"
ETCD_LISTEN_CLIENT_URLS="http:// 192.168.5.101:2379,http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http:// 192.168.5.101:2380"
ETCD_INITIAL_CLUSTER="etcd0=http:// 192.168.5.101:2380,etcd1=http:// 192.168.5.102:2380,etcd2=http:// 192.168.5.103:2380”
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS=http:// 192.168.5.101:2379
Node1节点修改etcd配置文件
[root@ s2 ~]# cat /etc/etcd/etcd.conf |grep -v "^#"
ETCD_NAME=etcd2
ETCD_DATA_DIR="/var/lib/etcd/etcd2"
ETCD_LISTEN_PEER_URLS="http:// 192.168.5.102:2380"
ETCD_LISTEN_CLIENT_URLS="http:// 192.168.5.102:2379, http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http:// 192.168.5.102:2380"
ETCD_INITIAL_CLUSTER="etcd0=http:// 192.168.5.101:2380,etcd1=http:// 192.168.5.102:2380,etcd2=http:// 192.168.5.103:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS=http:// 192.168.5.102:2379
Node2节点修改etcd配置文件
[root@ s2 ~]# cat /etc/etcd/etcd.conf |grep -v "^#"
ETCD_NAME=etcd3
ETCD_DATA_DIR="/var/lib/etcd/etcd3"
ETCD_LISTEN_PEER_URLS="http:// 192.168.5.103:2380"
ETCD_LISTEN_CLIENT_URLS="http:// 192.168.5.103:2379, http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http:// 192.168.5.103:2380"
ETCD_INITIAL_CLUSTER="etcd0=http:// 192.168.5.101:2380,etcd1=http:// 192.168.5.102:2380,etcd2=http:// 192.168.5.103:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS=http:// 192.168.5.103:2379
关于配置文件中一些解释:
分别在3个节点上启动etcd,并设置为开机自启:
systemctl restart etcd && systemctl enable etcd
- 配置k8s master(以下配置操作均在master节点上)
1)首先配置/etc/kubernetes/config文件
修改/etc/kubernetes/config文件如下:
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=true"
KUBE_MASTER="--master=http://192.168.5.101:8080"
(2)配置启动apiserver
vi /etc/kubernetes/apiserver 【修改文件如下】:
KUBE_API_ADDRESS="--address=0.0.0.0" #设为全部监听
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.5.101:2379,http:/ /192.168.5.102:2379,http:// 192.168.5.103:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
(3)Kube-Controller-Manager,Kube-Scheduler配置文件暂时不做修改
(4)启动Master上的三个服务
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
- 配置k8s node(以下配置操作均在node节点上)
(1) node1,node2节点上均要配置/etc/kubernetes/config文件
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.5.101:8080"
(2) node1,node2上均要修改kubelet配置:
vi /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=127.0.0.1"
KUBELET_HOSTNAME="--hostname-override=192.168.5.102"
#【注】:此项以node1为例,node2上ip换成192.168.5.103
KUBELET_API_SERVER="--api-servers=http://192.168.5.102:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
(3)分别启动kubernetes node服务并设为开机启动
systemctl start kubelet
systemctl start kube-proxy
systemctl enable kubelet
systemctl enable kube-proxy
- k8s flannel网络配置
flannel以插件的形式配置在kubernetes集群中,flannel作用:
flannel通过与etcd进行通信获取整个集群网段信息并进行子网的二次分配,使得每个minion节点都能拥有一个唯一的子网网段,进而确保在整个k8s集群中运行的docker容器都能获得唯一的ip地址。
(1) master,node1,node2上配置flannel
vi /etc/sysconfig/flanneld
FLANNEL_ETCD="http://172.16.110.135:2379" #本机的etcd服务,node1改为102,node2改为103
FLANNEL_ETCD_KEY="/coreos.com/network" #指定的一个key,安装etcd服务端时执行了的命令中要给这个key赋值,value就是每个节点上docker容器的ip范围
(2)接下来有三种方法操作:
方法一:
第一步:为flannel创建分配的网络
1)# 只在master上etcd执行
etcdctl mk /coreos.com/network/config '{"Network": "10.1.0.0/16"}'
2)# 若要重新建,先删除
etcdctl rm /coreos.com/network/ --recursive
第二步:重置docker0网桥的配置
删除docker启动时默认创建的docker0网桥,flannel启动时会获取到一个网络地址,并且配置docker0的IP地址,作为该网络的网关地址,若此时docker0上配置有IP地址,那么flannel将会启动失败。
删除docker启动时默认创建的docker0网桥:ip link del docker0
方法二:
第一步:启动FLANNEL
systemctl start flannel
第二步:修改docker网络
修改docker的service文件:
在执行前增加配置文件:
EnvironmentFile=-/etc/sysconfig/flanneld
EnvironmentFile=-/run/flannel/subnet.env
执行命令增加参数 --bip=${FLANNEL_SUBNET}
第三步:重启docker
systemctl daemon-reload
systemctl restart docker
【注】若配置完Flannel后,启动失败:
FLANNEL_ETCD_PREFIX很可能是/atomic.io/network,将其改为/coreos.com/network,或者也可以通过-etcd-prefix指定。
- 测试是否安装成功
master上执行下面,检查kubernetes的状态
kubectl get nodes
master上执行下面,检查etcd的状态
etcdctl member list
centos7查看日志命令: journalctl -xe
以上是周会报告整理。
更多推荐
所有评论(0)