• 1. 下载CentOS 7官方minimal镜像
  • 2. 安装VituralBox(Windows 10 64位)
  • 3. 安装Git for windows(Windows 10 64位)
  • 4. 安装VituralBox虚拟机并创建CentOS 7 Master主机
  • 5. 设置CentOS 7的网络环境和ssh连接(开放22端口)
  • 6. 构建CentOS虚拟机局域网
  • 7. Master主节点配置kubernetes+docker
  • 8. Node子节点配置kubernetes+docker
  • 附录

    


 

1. 下载CentOS 7官方minimal镜像


 

2. 安装VituralBox(Windows 10 64位)


 

3. 安装Git for windows(Windows 10 64位)

       官方下载地址:https://git-scm.com/download/win

       下载完成后,直接安装,下一步下一步就好了,主要是用于接上虚拟机输入命令,复制粘贴命令和文本非常方便,安装完成后,点击Git Bash可以看到以下界面:

centos8搭建k8s集群_操作系统


 

4.安装VituralBox虚拟机并创建CentOS 7 Master主机

      VituralBox是“下一步,下一步”的“傻瓜式安装”,这里注意下,安装位置不要选择C盘,因为会占用硬盘大量的空间,导致系统非常卡顿!

       安装完成后,在CMD界面输入“ifconfig”,查看虚拟网卡是否存在,存在就是装好了:

centos8搭建k8s集群_操作系统

      打开VirtualBox主界面,如下图所示,点击新建:

centos8搭建k8s集群_操作系统

     新建虚拟机,

centos8搭建k8s集群_centos8搭建k8s集群_04

centos8搭建k8s集群_操作系统切记保存位置不能选择C盘!,名字为“CentOS7-Master”,点击“下一步”

centos8搭建k8s集群_操作系统

    内存至少分配3.5GB,下一步,创建虚拟硬盘

centos8搭建k8s集群_操作系统

    创建虚拟硬盘->VDI->动态分配->硬盘大小至少分配20G以上,创建

centos8搭建k8s集群_操作系统    

centos8搭建k8s集群_操作系统     

centos8搭建k8s集群_操作系统            

centos8搭建k8s集群_操作系统 

     这时我们看到已经创建成功了,点击“启动”,载入下载好的CentOS7 minimal镜像ISO文件

      点击设置->显示→显示控制器更改为“VBoxVGA”(这一步是为了防止,启动后无法显示鼠标,就无法安装CentOS7 了)

centos8搭建k8s集群_操作系统

      设置完成后,选择“Install CentOS 7”,这里我们选择“英语”(美国),下一步,点击“安装位置”,选择分配的硬盘空间,下一步,设置用户名和密码,安装完成,点击重启

centos8搭建k8s集群_操作系统  

centos8搭建k8s集群_操作系统                                             

centos8搭建k8s集群_操作系统

centos8搭建k8s集群_操作系统   

centos8搭建k8s集群_操作系统  

centos8搭建k8s集群_操作系统

 


5. 设置CentOS 7的网络环境和ssh连接(开放22端口)

     输入用户名root,root密码,进入CentOS 7,这时我们输入“ping www.baidu.com”发现网卡无法访问外网,这时,输入命令


sudo  vi /etc/sysconfig/network-scripts/ifcfg-enp0s3


    # 找到 ONBOOT,把 no 改成 yes ,保存退出

centos8搭建k8s集群_操作系统  

centos8搭建k8s集群_操作系统  

重启虚拟机后,执行命令,yum环境可以使用了


sudo yum install net-tools


centos8搭建k8s集群_操作系统

sudo vi /etc/ssh/sshd_config


  # 把 Port 22 前面的#注释去掉

centos8搭建k8s集群_操作系统

firewall-cmd --permanent --zone=public --add-port=22/tcp  # 输入命令,把22端口添加到防火墙外


centos8搭建k8s集群_操作系统

关闭虚拟机,右键点击设置->网络,进行如下配置,主机ip填写windows下虚拟机网卡的ip,子ip填写CentOS里面enp0s3网卡的ip地址,端口填写22

centos8搭建k8s集群_操作系统     

centos8搭建k8s集群_操作系统

启动虚拟机,打开Git  Bash输入命令,发现可以连接进去虚拟机:


ssh root@192.168.56.1 # ssh root@虚拟网卡ip地址


centos8搭建k8s集群_操作系统


6.构建CentOS虚拟机局域网

点击管理->主机网络管理器,新建2个和前面的虚拟网卡统一网段的ip网卡

centos8搭建k8s集群_操作系统

把之前配置好的虚拟机,右键选择“克隆”

centos8搭建k8s集群_操作系统

克隆完成后,我们发现多出来了两个新的虚拟机

centos8搭建k8s集群_操作系统

  点击“管理”->"全局设定"->"网络"->新建一个网段为“10.0.3.0/24”的网段,配置如下图

centos8搭建k8s集群_操作系统

好了,这里我们需要分别设置3个虚拟机的网络,打开主机 Master的设置-网络,网卡1和网卡2配置如下: 

centos8搭建k8s集群_操作系统   

centos8搭建k8s集群_操作系统

Node1的网卡1、网卡2配置:

centos8搭建k8s集群_操作系统 

centos8搭建k8s集群_操作系统

Node2的网卡1、网卡2配置:

centos8搭建k8s集群_操作系统   

centos8搭建k8s集群_操作系统

 分别开启3台虚拟机,输入”ifconfig“查询到3个ip地址

centos8搭建k8s集群_操作系统

 

  根据对应的ip地址重新填写各虚拟机网卡1的”端口转发“规则

centos8搭建k8s集群_操作系统

centos8搭建k8s集群_操作系统

centos8搭建k8s集群_操作系统

最后利用git bash 用ssh命令登陆3台虚拟机,然后两两相互ping,如果能ping通,证明局域网CentOS环境已经搭建完成,我们正式进入k8s+docker的环境搭建

centos8搭建k8s集群_操作系统


7. Master主节点配置kubernetes+docker

目前我们的3台虚拟机如下:

  • Master主节点(ip:10.0.3.4)
  • Node1子节点(ip:10.0.3.5)
  • Node2子节点(ip:10.0.3.6)

输入以下命令关闭防火墙:


setenforce 0

systemctl stop firewalld & systemctl disable firewalld

sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux

swapoff -a

firewall-cmd --reload


yum安装k8s和etcd:


yum -y install etcd kubernetes


 


修改配置如下,保存退出


 


sudo vi /etc/etcd/etcd.conf


 

 

centos8搭建k8s集群_操作系统

#[Member] 
#ETCD_CORS="" 
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" 
#ETCD_WAL_DIR="" 
#ETCD_LISTEN_PEER_URLS="http://localhost:2380" 
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" 
#ETCD_MAX_SNAPSHOTS="5" 
#ETCD_MAX_WALS="5" 
ETCD_NAME=default 
#ETCD_SNAPSHOT_COUNT="100000" 
#ETCD_HEARTBEAT_INTERVAL="100" 
#ETCD_ELECTION_TIMEOUT="1000" 
#ETCD_QUOTA_BACKEND_BYTES="0" 
#ETCD_MAX_REQUEST_BYTES="1572864" 
#ETCD_GRPC_KEEPALIVE_MIN_TIME="5s" 
#ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s" 
#ETCD_GRPC_KEEPALIVE_TIMEOUT="20s" 
# 
#[Clustering] 
#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" 
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" 
#ETCD_DISCOVERY="" 
#ETCD_DISCOVERY_FALLBACK="proxy" 
#ETCD_DISCOVERY_PROXY="" 
#ETCD_DISCOVERY_SRV="" 
#ETCD_INITIAL_CLUSTER="default=http://localhost:2380" 
#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" 
#ETCD_INITIAL_CLUSTER_STATE="new" 
#ETCD_STRICT_RECONFIG_CHECK="true" 
#ETCD_ENABLE_V2="true" 
# 
#[Proxy] 
#ETCD_PROXY="off" 
#ETCD_PROXY_FAILURE_WAIT="5000" 
#ETCD_PROXY_REFRESH_INTERVAL="30000" 
#ETCD_PROXY_DIAL_TIMEOUT="1000" 
#ETCD_PROXY_WRITE_TIMEOUT="5000" 
#ETCD_PROXY_READ_TIMEOUT="0" 
# 
#[Security] 
#ETCD_CERT_FILE="" 
#ETCD_KEY_FILE="" 
#ETCD_CLIENT_CERT_AUTH="false" 
#ETCD_TRUSTED_CA_FILE="" 
#ETCD_AUTO_TLS="false" 
#ETCD_PEER_CERT_FILE="" 
#ETCD_PEER_KEY_FILE="" 
#ETCD_PEER_CLIENT_CERT_AUTH="false" 
#ETCD_PEER_TRUSTED_CA_FILE="" 
#ETCD_PEER_AUTO_TLS="false" 
# 
#[Logging] 
#ETCD_DEBUG="false" 
#ETCD_LOG_PACKAGE_LEVELS="" 
#ETCD_LOG_OUTPUT="default" 
# 
#[Unsafe] 
#ETCD_FORCE_NEW_CLUSTER="false" 
# 
#[Version] 
#ETCD_VERSION="false" 
#ETCD_AUTO_COMPACTION_RETENTION="0" 
# 
#[Profiling] 
#ETCD_ENABLE_PPROF="false" 
#ETCD_METRICS="basic" 
# 
#[Auth] 
#ETCD_AUTH_TOKEN="simple"


 


修改配置如下,保存退出


sudo vi /etc/kubernetes/apiserver


centos8搭建k8s集群_操作系统

### 
# kubernetes system config 
# 
# The following values are used to configure the kube-apiserver 
# 
 
# The address on the local server to listen to. 
KUBE_API_ADDRESS="--address=0.0.0.0" 
 
# The port on the local server to listen on. 
KUBE_API_PORT="--port=8080" 
 
# Port minions listen on 
KUBELET_PORT="--kubelet-port=10250" 
 
# Comma separated list of nodes in the etcd cluster 
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" 
 
# Address range to use for services 
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" 
 
# default admission control policies 
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,L
imitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" 
 
# Add your own! 
KUBE_API_ARGS=""

centos8搭建k8s集群_操作系统

  • 输入命令:
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do 
systemctl restart $SERVICES 
systemctl enable $SERVICES 
systemctl status $SERVICES 
done


centos8搭建k8s集群_操作系统

  • 10.0.2.7换成自己主机节点虚拟机的ip

 


etcdctl -C http://10.0.3.4:2379 set /atomic.io/network/config '{
"Network":"10.1.0.0/16"}'


 

centos8搭建k8s集群_操作系统


8. Node子节点配置kubernetes+docker


setenforce 0

systemctl stop firewalld & systemctl disable firewalld 

sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux

swapoff -a

firewall-cmd --reload


#安装k8s


yum -y install flannel kubernetes

centos8搭建k8s集群_操作系统

sudo vi /etc/kubernetes/config


    修改配置如下,保存退出 , 这里填写的ip是主节点的ip,不是自己的ip!

centos8搭建k8s集群_操作系统

KUBE_MASTER="--master=http://10.0.3.4:8080" 
KUBE_ETCD_SERVERS="--etcd_servers=http://10.0.3.4:2379"

centos8搭建k8s集群_操作系统

sudo vi /etc/kubernetes/kubelet


   修改配置如下,保存退出 ,


KUBELET_ADDRESS="--address=0.0.0.0" 
 
# The port for the info server to serve on 
KUBELET_PORT="--port=10250" 
 
# You may leave this blank to use the actual hostname 
KUBELET_HOSTNAME="--hostname-override=10.0.3.6" 
 
# location of the api-server 
KUBELET_API_SERVER="--api-servers=http://10.0.3.4:8080" 
 
# pod infrastructure container 
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.
com/rhel7/pod-infrastructure:latest" 
 
# Add your own! 
KUBELET_ARGS=""


 输入命令centos8搭建k8s集群_操作系统


ip link delete docker0


sudo vi /etc/sysconfig/flanneld

centos8搭建k8s集群_操作系统

   修改配置如下,保存退出 ,


# Flanneld configuration options 
 
# etcd url location. Point this to the server where etcd runs 
FLANNEL_ETCD_ENDPOINTS="http://10.0.3.4:2379" 
 
# etcd config key. This is the configuration key that flannel queries 
# For address range assignment 
FLANNEL_ETCD_PREFIX="/atomic.io/network" 
 
# Any additional options that you want to pass 
#FLANNEL_OPTIONS=""


centos8搭建k8s集群_操作系统


   输入命令:


for SERVICES in flanneld kube-proxy kubelet docker; do 
systemctl restart $SERVICES 
systemctl enable $SERVICES 
systemctl status $SERVICES 
done


centos8搭建k8s集群_操作系统

最后一步,在主机节点(10.0.3.4)输入命令:


kubectl get nodes