VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群
- 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镜像
- 安装迅雷软件
- 使用迅雷访问官方地址,下载镜像:http://mirrors.huaweicloud.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso
2. 安装VituralBox(Windows 10 64位)
3. 安装Git for windows(Windows 10 64位)
官方下载地址:https://git-scm.com/download/win
下载完成后,直接安装,下一步下一步就好了,主要是用于接上虚拟机输入命令,复制粘贴命令和文本非常方便,安装完成后,点击Git Bash可以看到以下界面:
4.安装VituralBox虚拟机并创建CentOS 7 Master主机
VituralBox是“下一步,下一步”的“傻瓜式安装”,这里注意下,安装位置不要选择C盘,因为会占用硬盘大量的空间,导致系统非常卡顿!
安装完成后,在CMD界面输入“ifconfig”,查看虚拟网卡是否存在,存在就是装好了:
打开VirtualBox主界面,如下图所示,点击新建:
新建虚拟机,切记保存位置不能选择C盘!,名字为“CentOS7-Master”,点击“下一步”
内存至少分配3.5GB,下一步,创建虚拟硬盘
创建虚拟硬盘->VDI->动态分配->硬盘大小至少分配20G以上,创建
这时我们看到已经创建成功了,点击“启动”,载入下载好的CentOS7 minimal镜像ISO文件

点击设置->显示→显示控制器更改为“VBoxVGA”(这一步是为了防止,启动后无法显示鼠标,就无法安装CentOS7 了)
设置完成后,选择“Install CentOS 7”,这里我们选择“英语”(美国),下一步,点击“安装位置”,选择分配的硬盘空间,下一步,设置用户名和密码,安装完成,点击重启
5. 设置CentOS 7的网络环境和ssh连接(开放22端口)
输入用户名root,root密码,进入CentOS 7,这时我们输入“ping www.baidu.com”发现网卡无法访问外网,这时,输入命令
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 找到 ONBOOT,把 no 改成 yes ,保存退出
重启虚拟机后,执行命令,yum环境可以使用了
sudo yum install net-tools
sudo vi /etc/ssh/sshd_config
# 把 Port 22 前面的#注释去掉
firewall-cmd --permanent --zone=public --add-port=/tcp # 输入命令,把22端口添加到防火墙外
关闭虚拟机,右键点击设置->网络,进行如下配置,主机ip填写windows下虚拟机网卡的ip,子ip填写CentOS里面enp0s3网卡的ip地址,端口填写22
启动虚拟机,打开Git Bash输入命令,发现可以连接进去虚拟机:
ssh root@192.168.56.1 # ssh root@虚拟网卡ip地址
6.构建CentOS虚拟机局域网
点击管理->主机网络管理器,新建2个和前面的虚拟网卡统一网段的ip网卡
把之前配置好的虚拟机,右键选择“克隆”
克隆完成后,我们发现多出来了两个新的虚拟机
点击“管理”->"全局设定"->"网络"->新建一个网段为“10.0.3.0/24”的网段,配置如下图
好了,这里我们需要分别设置3个虚拟机的网络,打开主机 Master的设置-网络,网卡1和网卡2配置如下:
Node1的网卡1、网卡2配置:
Node2的网卡1、网卡2配置:
分别开启3台虚拟机,输入”ifconfig“查询到3个ip地址
根据对应的ip地址重新填写各虚拟机网卡1的”端口转发“规则
最后利用git bash 用ssh命令登陆3台虚拟机,然后两两相互ping,如果能ping通,证明局域网CentOS环境已经搭建完成,我们正式进入k8s+docker的环境搭建
7. Master主节点配置kubernetes+docker
目前我们的3台虚拟机如下:
- Master主节点(ip:10.0.3.4)
- Node1子节点(ip:10.0.3.5)
- Node2子节点(ip:10.0.3.6)
输入以下命令关闭防火墙:
setenforce 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
#[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=""
#ETCD_MAX_WALS=""
ETCD_NAME=default
#ETCD_SNAPSHOT_COUNT=""
#ETCD_HEARTBEAT_INTERVAL=""
#ETCD_ELECTION_TIMEOUT=""
#ETCD_QUOTA_BACKEND_BYTES=""
#ETCD_MAX_REQUEST_BYTES=""
#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=""
#ETCD_PROXY_REFRESH_INTERVAL=""
#ETCD_PROXY_DIAL_TIMEOUT=""
#ETCD_PROXY_WRITE_TIMEOUT=""
#ETCD_PROXY_READ_TIMEOUT=""
#
#[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=""
#
#[Profiling]
#ETCD_ENABLE_PPROF="false"
#ETCD_METRICS="basic"
#
#[Auth]
#ETCD_AUTH_TOKEN="simple"
sudo vi /etc/kubernetes/apiserver
###
# 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=""
- 输入命令:
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
- 10.0.2.7换成自己主机节点虚拟机的ip
etcdctl -C http://10.0.3.4:2379 set /atomic.io/network/config '{
"Network":"10.1.0.0/16"}'
8. Node子节点配置kubernetes+docker
setenforce 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
sudo vi /etc/kubernetes/config
修改配置如下,保存退出 , 这里填写的ip是主节点的ip,不是自己的ip!
KUBE_MASTER="--master=http://10.0.3.4:8080"
KUBE_ETCD_SERVERS="--etcd_servers=http://10.0.3.4:2379"
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=""
输入命令
ip link delete docker0
sudo vi /etc/sysconfig/flanneld
修改配置如下,保存退出 ,
# 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=""
输入命令:
for SERVICES in flanneld kube-proxy kubelet docker; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
最后一步,在主机节点(10.0.3.4)输入命令:
kubectl get nodes
大功告成!如果这篇文章可以帮到你,就资助下小弟吧
附录
三篇参考博客:
- vituralbox虚拟机安装及配置(一、二):https://www.jianshu.com/p/78a5afd0c597
- vituralbox搭建局域网虚拟机:https://jingyan.baidu.com/article/22a299b5d5989d9e19376ab7.html
- Kubernetes+docker集群搭建博客:https://blog.csdn.net/real_myth/article/details/78719244
- CentOS minimal刚完成安装无法联网:https://www.cnblogs.com/syscn/p/9802924.html
- CentOS 开放22端口:https://www.cnblogs.com/xxx91hx/p/4374289.html
VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群的更多相关文章
- PC(win10)上搭建 kubernetes + docker 集群环境
最近kubernetes很火,加上我又在寻找适合快速搭建测试环境的方法,kubernetes的理念很适合用于测试环境的搭建. 因此在学习的过程中写下此教程(记录)以供回顾. 0x00 环境准备 0x0 ...
- 从零搭建基于webpack的Electron-Vue3项目(1)——基于webpack的Vue3项目搭建
从零搭建基于webpack的Electron-Vue3项目(1)--基于webpack的Vue3项目搭建 前言 本篇文章内容,主要是基于webpack的Vue3项目开发环境进行搭建,暂时还不涉及到El ...
- Zookeeper集群搭建(多节点,单机伪集群,Docker集群)
Zookeeper介绍 原理简介 ZooKeeper是一个分布式的.开源的分布式应用程序协调服务.它公开了一组简单的原语,分布式应用程序可以在此基础上实现更高级别的同步.配置维护.组和命名服务.它的设 ...
- k8s docker集群搭建
一.Kubernetes系列之介绍篇 •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器 ...
- Kubernetes(k8s) docker集群搭建
原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇 •Kubernetes介绍 1.背 ...
- docker探索-swarm搭建docker集群(七)
前言 Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令,docker s ...
- 基于zookeeper+mesos+marathon的docker集群管理平台
参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...
- 搭建Kubernetes容器集群管理系统
1.Kubernetes 概述 Kubernetes 是 Google 开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.劢态扩缩容等功能套件. 基 ...
- 5.基于二进制部署kubernetes(k8s)集群
1 kubernetes组件 1.1 Kubernetes 集群图 官网集群架构图 1.2 组件及功能 1.2.1 控制组件(Control Plane Components) 控制组件对集群做出全局 ...
随机推荐
- php+redis一步一步测试秒杀
1.普通的秒杀查库减库存: <?php /** 100个用户同时访问100次会出现超卖 **/ //连接数据库 $dsn = "mysql:host=localhost;dbname= ...
- 复杂sql书写方法
给你一个复杂sql连接不同的表,多个嵌套查询条件等的语句时,你是非常的胆怯由于对语法的不熟悉以及没有经验和自信,现在我们来学习一下如何写复杂的sql,我们把它分解为很多小的步骤进行 一.集中最后的输出 ...
- 说一下 runnable 和 callable 有什么区别?(未完成)
说一下 runnable 和 callable 有什么区别?(未完成)
- js 获取扫码枪信息
---- js 获取扫码枪不需要记录 lastCode 啊,只需要在时间超出范围的时候重置 lastTime 和 code 就行了.如果 码枪会输入回车,那就在 keyCode === 13 的时候使 ...
- MySQL之profiling性能分析(在5.6.14版本被丢弃)
官方建议使用information_schema.profiling. 原因是show profile 输出了查询执行的每个步骤及其花费的时间,但是结果很难快速确定哪个步骤花费的时间最多,因为输出是按 ...
- BZOJ 3894 / Luogu P4313 文理分科 (拆点最小割)
题面 中文题面- BZOJ 传送门 Luogu 传送门 分析 这道题类似于BZOJ 3774 最优选择,然后这里有一篇博客写的很好- Today_Blue_Rainbow's Blog 应该看懂了吧- ...
- activemq的配置与结合spring使用
其实无论在win下还是在linux下,都可以运行得很爽 下载安装包地址: http://www.apache.org/dyn/closer.cgi?path=/activemq/5.12.1/apac ...
- CodeForces 840B - Leha and another game about graph | Codeforces Round #429(Div 1)
思路来自这里,重点大概是想到建树和无解情况,然后就变成树形DP了- - /* CodeForces 840B - Leha and another game about graph [ 增量构造,树上 ...
- 关于class
1.使用#include分离函数的定义与实现 c语言可以在xxx.h中定义函数,然后在xxx.cpp中实现函数: 在需要用到这些函数时,只要用#include引入xxx.h即可,这样就不用将所有代码全 ...
- jQuery.map(arr|obj,callback)
jQuery.map(arr|obj,callback) 概述 将一个数组中的元素转换到另一个数组中.广州大理石机械构件 作为参数的转换函数会为每个数组元素调用,而且会给这个转换函数传递一个表示被转换 ...