在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现在我们就以这个镜像为基础,开始安装kubernetes集群吧;

前提条件

由于要用到谷歌的服务,所以要求您的网络环境可以科学上网,具体的方案就不在这里说了;

复制文件

如下图所示,cent7是我们上一章操作完成后对应的CentOS7的VMware文件夹,现在把这个文件夹复制三份一模一样的,再分别重命名为maste、node1、node2: 

启动master

打开VMware软件,选中上面我们复制的master文件夹,选中里面的文件然后点击“打开”按钮,如下图: 

如下图,点击红框中的“编辑虚拟机设置”按钮 

如下图,在设置页面中将虚拟机名字改成”master”: 

如下图,点击红框中的按钮启动master: 

如下图,在弹出的窗口中选择“我已复制该虚拟机”: 

修改hostname再重启master

等master启动完毕,进入系统,修改/etc/hostname文件,这里面只有一行内容“localhost.localdomain”,改成”master”;

修改完hostname文件后,重启master;

启动kubelet服务

执行以下命令设置kubelet自启动,然后再启动kubelet服务:

systemctl enable kubelet;systemctl start kubelet

初始化kubernetes的master服务

执行以下命令,初始化kubernetes的master服务,此时由于要去下载谷歌服务的镜像文件,所以请保证当前网络可以科学上网::

kubeadm init --pod-network-cidr=192.168.0.0/ --apiserver-advertise-address=0.0.0.0

如果网络没有问题,就请耐心等待吧,大约二十分钟就会完成init过程,如下图:

注意上图中的最后一句kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443,在node加入的时候我们就是用这一句来将node加入到集群的;

为什么init操作要用这么长时间呢?执行docker images命令可以看到下载多了很多镜像,如下图:

新增了6个镜像;

如果不能科学上网,可以使用下面的方法下载镜像:

下载镜像

在运行kubeadm之前,需要在本地先下载一系列images,这些images名称和版本,可以运行kubeadm init,初始化后得到

具体会生成在/etc/kubernetes/manifest目录下,通过grep命令可以列出,比如

cat etcd.yaml | grep gcr*
image: gcr.io/google_containers/etcd-amd64:3.0.17

那具体需要下载哪些images和相应的版本呢? 可以参照kubernetes kubeadm手册,具体地址

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/

查看kubeadm的版本号:

[root@master ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.5", GitCommit:"f01a2bf98249a4db383560443a59bed0c13575df", GitTreeState:"clean", BuildDate:"2018-03-19T15:50:45Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

这里就有比较清楚的版本和对应关系。

如何获取镜像

国内因为gcr.io被墙,所以要么通过代理FQ获取,要么寻找其他办法。我的办法是访问

https://hub.docker.com/,然后搜索kube-apiserver-amd64,会列出各位大神已经build好的images

进入源代码仓库如下图:

点击dockerfile查看镜像打包的版本

选择相应的版本,进行pull

docker pull maichong/etcd-amd64:3.1.10
docker pull maichong/pause-amd64:3.0
docker pull maichong/kube-proxy-amd64:v1.9.2
docker pull maichong/kube-scheduler-amd64:v1.9.2
docker pull maichong/kube-controller-manager-amd64:v1.9.2
docker pull maichong/kube-apiserver-amd64:v1.9.2

下载完查看镜像

创建kube目录,添加kubectl配置

执行以下命令,把配置信息复制到执行目录中:

mkdir -p $HOME/.kube;cp -i /etc/kubernetes/admin.conf $HOME/.kube/config;chown $(id -u):$(id -g) $HOME/.kube/config

添加Calico(网络组件)

执行以下命令,安装Calico

kubectl apply -f http://docs.projectcalico.org/v2.4/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

检查是否启动成功

执行以下命令,看基础服务的pod都起来了没有:

kubectl get pods --all-namespaces

看到的pod信息如下图所示,红框中有一个pod并不是Running状态,而是ContainerCreating:

这时候请耐心等待几分钟,再看就会变成下面的状态:

用docker images命令看一下,发现多了几个镜像,如下图:

用kubectl get node命令查看当前的节点信息,能看见只有一个master节点,如下图:

至此,kubernetes集群的master节点就安装完成了,因为还没有加入node节点,所以此时还不能部署应用,等下一章我们将node节点加入后再部署应用试试;

kubeadm搭建kubernetes集群之二:创建master节点的更多相关文章

  1. kubeadm搭建kubernetes集群之三:加入node节点

    在上一章<kubeadm搭建kubernetes集群之二:创建master节点>的实战中,我们把kubernetes的master节点搭建好了,本章我们将加入node节点,使得整个环境可以 ...

  2. kubeadm 搭建kubernetes集群环境

    需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...

  3. kubeadm搭建kubernetes集群之一:构建标准化镜像

    使用docker可以批量管理多个容器,但都是在同一台电脑内进行的,这在实际生产环境中是不够用的,如何突破单机的限制?让多个电脑上的容器可以像单机上的docker-compose.yml管理的那样方便呢 ...

  4. 通过Kubeadm搭建Kubernetes集群

    历经断断续续学习的两天,终于完成了一个简单k8s集群. 参考 https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_deepstudy_par ...

  5. centos7使用kubeadm搭建kubernetes集群

    一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...

  6. [转帖] kubeadm搭建kubernetes集群

    http://www.bladewan.com/2018/01/02/kubernetes_install/ 学习中 kubernetes V1.9安装(附离线安装包和离线镜像)  2018-01-0 ...

  7. kubeadm 线上集群部署(二) K8S Master集群安装以及工作节点的部署

    PS:所有机器主机名请提前设置好 在上一篇,ETCD集群我们已经搭建成功了,下面我们需要搭建master相关组件,apiverser需要与etcd通信并操作 1.配置证书 将etcd证书上传到mast ...

  8. 使用kubeadm搭建Kubernetes集群

    记录在石墨日记中,经常更新,懒得再复制了,直接点击下面链接查看吧 移步到此: https://shimo.im/docs/22WbxxQa1WUV9wsN/

  9. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

随机推荐

  1. java计算两个日期之间相隔的月份(向下取整)

    最近需求里面有个需要计算两个日期之间相隔的月份,写起来还挺繁琐,需要将各种情况都要考虑到,写了一个作为以后自己的工具吧. //获取哪一天 public static int getDay(Date d ...

  2. javascript中关于&& 和 || 表达式的小技巧分享

    如果你还是新手, 而且读完所有这些技巧的详解和每种技巧是如果工作的以后运用它们, 你会写出更加简练高效的JavaScript程序. 确实, JavaScript高手已经运用这些技巧写出了很多强大, 高 ...

  3. Javascript 十移跳转页面

    <srcipty> var t = 10; function openwin(){ t -= 1; if( t==0){ location.href='prototype.html'; } ...

  4. Struts2的select使用

    struts2的select标签中,常用的有以下几个属性:(1)struts2中的select 标签中,必须设置的属性只有一个,即是list.(2)select标签的list中必须有值,不然会报错.如 ...

  5. JavaScript设计模式与开发实践:分时函数

    web端在进行大量DOM数据插入的时候,如果一次性插入上千条数据,浏览器吃不消会出现卡顿假死的情况,代码如下: var arr = []; for(var i = 0; i < 1000; i+ ...

  6. linux---nginx服务nfs服务nginx反向代理三台web

    一:nginx服务 1.二进制安装nginx包 [root@bogon ~]# systemctl disable firewalld #关闭Firewalls自启动 Removed symlink ...

  7. Ansible 手册系列 二(安装)

    通过yum(CentOS, RHEL)安装 系统版本: CentOS7.2 yum install ansible -y 通过pip安装 安装easy_install # 安装easy_install ...

  8. IRC BOT原来是利用IRC下发C&C命令——在xx云环境遇到了,恶意软件开的是6666端口

    Backdoor/IRC.RpcBot 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! Backdoor/IRC.RpcBot是一些批处理文件.脚本文件和执行文件的集合,也是 ...

  9. js排序算法01——冒泡排序

    在codewars上面刷题卡住刷不下去了,意识到自己算法方面的不足,准备写一些算法方面的文章,此为一. 冒泡排序是很常见简单的算法了,每次比较任何两个相邻的项,如果第一个比第二个大,则交换他们,就像气 ...

  10. git推送文件到远程仓库

    远程仓库未创建 git init 初始化一只本地仓库 把你的项目扔进去(或者基于初始化仓库建立项目vue init webpack demoxxxx) git status //查看状态 git ad ...