主要内容

1.环境准备(2主机)

2.安装流程

3.问题分析

4.总结

环境配置(2主机)

系统:CentOS 7.3 x64 
网络:局域网(VPC) 
主机: 
master:172.16.0.17 
node-1:172.16.0.7

一、修改host配置

修改master和minion-1的host文件,使得各主机可通过主机名访问,方便更新和迁移

echo "39.96.69.98   k8s-master
47.94.174.85 k8s-node1" >> /etc/hosts

二、关闭

  1、禁用并关闭防火墙或者直接一句话 systemctl stop firewalld & systemctl disable firewalld

[root@k8s-master ~]# systemctl disable firewalld
[root@k8s-master ~]# systemctl stop firewalld [root@k8s-node-1 ~]# systemctl disable firewalld
[root@k8s-node-1 ~]# systemctl stop firewalld

  2、关闭selinux

[root@k8s-master ~]# setenforce 0

[root@k8s-node-1 ~]# setenforce 0

 临时关闭,重启后失效

  3、关闭swap

 

[root@k8s-master ~]# swapoff -a

[root@k8s-node-1 ~]# swapoff -a

临时关闭,重启后失效  

开始搭建 Master

设置hostname-将hostname修改为 k8s-master并且sudo vim /etc/hosts 追加 39.96.69.98 k8s-master

hostnamectl set-hostname k8s-master

echo "39.96.69.98   k8s-master" >> /etc/hosts

  

开启  br_netfilter kernel module

modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
echo '1' > /proc/sys/net/ipv4/ip_forward

1、安装 docker ce

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install -y docker-ce

 

2、安装 k8s

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

  

安装
yum install -y kubelet kubeadm kubectl

3、重启

sudo reboot

4、启动 docker and kublet

systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet

  

下面要初始化 但是下面部分需要讲解改变docker 源 才可以进行操作

更改初始化的docker 源以下步骤:

  

解决方式

最少需要2个cpu或者加个参数 --ignore-preflight-errors=NumCPU

kubeadm init --apiserver-advertise-address=47.94.174.85 --ignore-preflight-errors=NumCPU

 

提示docker pull镜像失败,开启ss

kubeadm init 命令默认使用的docker镜像仓库为k8s.gcr.io,国内无法直接访问,于是需要变通一下。

首先查看需要使用哪些镜像

kubeadm config images list
#输出如下结果
k8s.gcr.io/kube-apiserver:v1.12.2
k8s.gcr.io/kube-controller-manager:v1.12.2
k8s.gcr.io/kube-scheduler:v1.12.2
k8s.gcr.io/kube-proxy:v1.12.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

我们通过 docker.io/mirrorgooglecontainers 中转一下

批量下载及转换标签

脚本如下

kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g' |sh -x
docker images |grep mirrorgooglecontainers |awk '{print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's#docker.io/mirrorgooglecontainers#k8s.gcr.io#2' |sh -x
docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ", $1":"$2}' |sh -x
docker pull coredns/coredns:1.2.2
docker tag coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker rmi coredns/coredns:1.2.2

注:coredns没包含在docker.io/mirrorgooglecontainers中,需要手工从coredns官方镜像转换下。

 

查看镜像列表

docker images
#输出如下结果
k8s.gcr.io/kube-apiserver:v1.12.2
k8s.gcr.io/kube-controller-manager:v1.12.2
k8s.gcr.io/kube-scheduler:v1.12.2
k8s.gcr.io/kube-proxy:v1.12.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

现在已经满足要求了,可以愉快的继续kubeadm init   (我采用这个方法)

kubeadm init --apiserver-advertise-address=39.96.69.98
最少需要2个cpu或者加个参数 --ignore-preflight-errors=NumCPU 即:kubeadm init --apiserver-advertise-address=39.96.69.98 --ignore-preflight-errors=NumCPU

  

(下面是另一种方式没实践过)

另外一种方法是使用kubeadm配置文件,通过在配置文件中指定docker仓库地址,便于内网快速部署。目前处于试验阶段。

生成配置文件

kubeadm config print-defaults --api-objects ClusterConfiguration >kubeadm.conf
 

将配置文件中的

imageRepository: k8s.gcr.io
 

改为你自己的私有docker仓库,比如

imageRepository: docker.io/mirrorgooglecontainers
 

kubeadm生成的配置文件目前不够完善,需要修改kubernetes版本

kubernetesVersion: v1.12.0
 

改为

kubernetesVersion: v1.12.2
 

然后运行命令

kubeadm config images list --config kubeadm.conf
kubeadm config images pull --config kubeadm.conf
kubeadm init --config kubeadm.conf
 

更多kubeadm配置文件参数详见

kubeadm config print-defaults

 总之如图上面镜像是可以的,但是下面还是有问题 分别是1、内核不支持5.0的 2、 上面补上开启  br_netfilter kernel module 3、docker 版本改上

二、kubernetes环境搭建的更多相关文章

  1. Docker Kubernetes 环境搭建

    Docker Kubernetes 环境搭建 节点规划 版本 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 etcd存储版本:etcd-3. ...

  2. 傲视Kubernetes(二):Docker镜像搭建与本地Kubernetes环境搭建

    主要内容: 1.Docker与Kubernetes的关系 2.SpringBoot微服务的Docker镜像创建 3.Kubernetes本地环境搭建 一.Docker与Kubernetes的关系 在说 ...

  3. kubernetes 环境搭建

    一.规划1.系统centos 7 2.ip规划及功能分配192.168.2.24 master 192.168.2.24 etcd 192.168.2.25 node1(即minion)192.168 ...

  4. Appium+python自动化(二)- 环境搭建—下(超详解)

    简介 宏哥的人品还算说得过去,虽然很久没有搭建环境了,但是换了新电脑设备,一气呵成,将android的测试开发环境已经搭建准备完毕.上一篇android测试开发环境已经准备好, 那么接下来就是appi ...

  5. Selenium基础教程(二)环境搭建

    一.环境搭建 (1)初学者最佳环境: Python 2.7 + Selenium 2+ Firefox 46 (2)喜欢尝新的环境: Python 3.6 + Selenium 3+ Firefox ...

  6. cesium编程入门(二)环境搭建

    环境搭建 环境搭建 编译 node 安装 Node.js安装包及源码下载地址为:https://nodejs.org/en/download/. 安装完成后,打开命令行,输入:node -v,如果结果 ...

  7. 【Hbase二】环境搭建

    此笔记仅用于作者记录复习使用,如有错误地方欢迎留言指正,作者感激不尽,如有转载请指明出处 Hbase环境搭建 Hbase环境搭建 hadoop为HA的Hbase配置 Zookeeper集群的正常部署并 ...

  8. mybatis学习(二)——环境搭建

    开发环境搭建主要包括以下几步 1.新建一个JAVA项目(可以只建一个文件夹)  2.导入jar包 log4j是一个日志包,可以不加,这里为了定位问题添加了该包,下面两个包必须需要. 3.创建数据库 C ...

  9. RocketMQ系列(二)环境搭建

    RocketMQ的基本概念在上一篇中给大家介绍了,这一节将给大家介绍环境搭建.RocketMQ中最基础的就是NameServer,我们先来看看它是怎么搭建的. NameServer RocketMQ要 ...

随机推荐

  1. Spring Security(四):2.1 Introduction What is Spring Security?

    Spring Security provides comprehensive security services for Java EE-based enterprise software appli ...

  2. if选择语句与switch选择语句的比较、区别及应用场景

    if选择语句和switch选择语句的比较: 1.switch语句只支持常量值相等的分支判断,而if语句支持更为灵活,任意布尔表达式均可: 2.switch语句通常比一系列嵌套if语句效率更高:逻辑更加 ...

  3. Ubuntu14.04下如何安装TensorFlow

    一.安装Anaconda Anaconda官网(www.continuum.io/downloads) 也可以在(https://repo.continuum.io/archive/)上根据自己的操作 ...

  4. SkylineGlobe TerraExplorer Pro 遇到模型显示有锯齿怎么办?

    SkylineGlobe TerraExplorer Pro 遇到模型显示有锯齿怎么办? 这个问题跟软件的版本无关,跟机器的显卡有关,看下面的截图: 试试看,祝你好运!

  5. HBuilder使用夜神模拟器调试Android应用

    由于HBuilder的扫描机制无法直接连上夜神模拟器.我搞了好久终于找到办法了,分享给大家. 首先,启动HBuilder和夜神模拟器 然后打开cmd命令提示符 cd进入夜神模拟器bin目录 执行以下命 ...

  6. Java实现一个简单的加密解密方法

    Crypto是Java语言写的一个简单的加密解密方法. 使用方法: 加密方法 String cipherte=Enande.encrypt(content, pass): 解密方法 Enande.de ...

  7. [书籍]重温《Framework Design Guidelines》

    1. 前言 最近重温了<Framework Design Guidelines>. <Framework Design Guidelines>中文名称为<.NET设计规范 ...

  8. python第六章:三大利器(装饰器,迭代器,生成器)--小白博客

    python装饰器 什么是装饰器?在不修改源代码和调用方式的基础上给其增加新的功能,多个装饰器可以装饰在同一个函数上 # 原理(个人理解):将原函数(bar)的内存地址重新赋值,进行覆盖.新值为装饰器 ...

  9. LCT维护删除时间最晚生成树

    用来做动态图问题. 维护一棵删除时间最晚的生成树,这样好处是加入一条非树边时可以直接判断加还是不加,没有现在不加入而之后再加入的情况.要是我比你先被删,那我就完全没必要加.否则你现在就可以被删除掉.

  10. [2019BUAA软工助教]Alpha阶段无人转出申请审核结果

    [2019BUAA软工助教]Alpha阶段无人转出申请审核结果 一.队伍信息 队伍名 项目 人数 红太阳 社团 8(6+2) pureman 博客园 6 水哥牛逼 招募 6 葫芦娃 拖拽Pytorch ...