1、主机准备篇

使用vmware Workstation 10创建一台虚拟机,配置为2C/2G/50G,操作系统为CentOS Linux release 7.6.1810 (Core)。

IP地址为:192.168.198.136(DHCP自动分配的)

以root身份登录该主机,开始相关操作

禁用SELinux

# setenforce 0

# vim /etc/selinux/config

SELINUX=enforcing改为SELINUX=disabled

禁用防火墙

# systemctl disable firewalld

# systemctl stop firewalld

在yum仓库中添加kubernetes

# vim /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

安装docker、kubelet、kubeadm、kubectl、kubernetes-cni

# yum install docker kubelet kubeadm kubectl kubernetes-cni -y

# systemctl enable docker && systemctl start docker

# systemctl enable kubelet && systemctl start kubelet

# vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

# sysctl -p /etc/sysctl.d/k8s.conf

禁用交换分区

# swapoff -a

# sed -i '/ swap / s/^/#/' /etc/fstab

刚才的主机就作为kubernetes集群的主节点,现在克隆它,制造2台工作节点。

克隆完毕后,现在咱们的主机有3台:

192.168.198.136   2C/2G/50G   主节点

设置主机名:hostnamectl --static set-hostname master.k8s

192.168.198.131   2C/2G/50G   工作节点

设置主机名:hostnamectl --static set-hostname node1.k8s

192.168.198.132   2C/2G/50G   工作节点

设置主机名:hostnamectl --static set-hostname node2.k8s

为三台主机配置名称解析

# vim /etc/hosts

192.168.198.136 master.k8s

192.168.198.131 node1.k8s

192.168.198.133 node2.k8s

三台主机都得填写。

2、主节点初始化篇

由于初始化的过程中,要去k8s.gcr.io网站下载相关的镜像,而我们国内无法访问外网,所以只能另想其他办法。

找出需要下载的镜像列表

在主节点执行以下命令:

# kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.15.0

k8s.gcr.io/kube-controller-manager:v1.15.0

k8s.gcr.io/kube-scheduler:v1.15.0

k8s.gcr.io/kube-proxy:v1.15.0

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.3.10

k8s.gcr.io/coredns:1.3.1

这是我的结果,你在实验时,每个镜像的版本可能不一定是这样,但不影响你的实验。

下载每个镜像

既然国外无法下载,那就从国内下载。因为阿里云做了镜像,所以我们直接从阿里云下载。

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1

修改镜像的标签

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

开始初始化

# kubeadm init --pod-network-cidr=10.244.0.0/16

初始化完成后,最后会出现一行添加工作节点的命令:

kubeadm join 192.168.198.136:6443 --token 5r4ez7.srmu7uaxghoiprpr \

--discovery-token-ca-cert-hash sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43

在主节点上运行kubectl

要想运行kubectl,需要设置环境变量:

# export KUBECONFIG=/etc/kubernetes/admin.conf

# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

# kubectl get po -n kube-system

此时可以看到coredns这个pod还未运行,因为没有安装网络插件。

# kubectl get nodes

此时可以看到主节点的状态是NotReady,因为没有安装网络插件。

在将工作节点加入集群前,有一点需要提前做好准备,那就是:在工作节点上运行pod时,必须要有pause镜像的支持,否则任何pod都无法运行。

目前已知在工作节点上要运行的pod有:

kube-proxy

kube-flannel

pause

由于kube-flannel刚好可以在国内下载,所以我们要处理的有kube-proxy和pause。

处理方法同前面的步骤,直接从阿里云下载,然后打标签即可。

注意在2个工作节点都要如此操作。具体步骤不写出来,同上。

处理完之后,就可以开始下面的步骤了。

(我在这个地方栽了半天)

将另外2台工作节点加入到集群中

在node1.k8s上执行:

# kubeadm join 192.168.198.136:6443 \

--token 5r4ez7.srmu7uaxghoiprpr \

--discovery-token-ca-cert-hash \

sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43

在node2.k8s上执行:

# kubeadm join 192.168.198.136:6443 \

--token 5r4ez7.srmu7uaxghoiprpr \

--discovery-token-ca-cert-hash \

sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43

然后到主节点上查看节点是否进入集群:

# kubectl get nodes

此时发现2台工作节点已经进入集群,只是状态为NotReady。

查看节点NotReady的原因

# kubectl describe node node1.k8s

得知是CNI网络插件的原因。

安装网络插件,我们选择flannel:

# wget \

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# kubectl apply -f  kube-flannel.yml

稍等片刻,在主节点上再次查看各节点的状态,以及各pods的状态:

# kubectl get nodes

# kubectl get pods -n kube-system

到这里,我们使用kubeadm创建了一个kubernetes集群。该集群拥有3个节点,1个主节点,2个工作节点。

中间遇到的坎有:

1、因kube-proxy镜像无法从国内下载,导致2个工作节点上无法运行kube-proxy的pod,使得整体的集群无法成功。

2、同理,pause镜像也是同样的问题。

3、在1.15版本中,好像只能使用flannel网络插件。因为我在使用另一个插件weave-net时,总是报错:

open /run/flannel/subnet.env: no such file or directory,说明在新版的kubernetes中,只能使用flannel。

使用kubeadm安装kubernetes 1.15的更多相关文章

  1. 使用kubeadm 安装 kubernetes 1.15.1

    简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...

  2. 在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践

    前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernetes由于"scientifically上网"问题举步维艰,本文以实战经 ...

  3. Centos 使用kubeadm安装Kubernetes 1.15.3

    本来没打算搞这个文章的,第一里面有瑕疵(没搞定的地方),第二在我的Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装 也有安装,第三 和社区的问文章比较雷同 https:// ...

  4. 使用kubeadm安装Kubernetes 1.15.3 并开启 ipvs

    一.安装前准备 机器列表 主机名 IP node-1(master) 1.1.1.101 node-2(node) 1.1.1.102 node-3(node) 1.1.1.103 设置时区 cp / ...

  5. Kubeadm安装Kubernetes 1.15.1

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

  6. kubeadm安装Kubernetes 1.15 实践

    原地址参考github 一.环境准备(在全部设备上进行) 3 台 centos7.5 服务器,网络使用 Calico. IP地址 节点角色 CPU 内存 Hostname 10.0.1.45 mast ...

  7. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  8. 使用 kubeadm 安装 kubernetes v1.16.0

    近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系           统:CentOS Linux release 7.6 Docke ...

  9. kubeadm安装kubernetes V1.11.1 集群

    之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...

随机推荐

  1. Java-Class-I:org.springframework.web.mutipart.MutipartFile

    ylbtech-Java-Class-I:org.springframework.web.mutipart.MutipartFile 1.返回顶部   2.返回顶部 1.1. import org.s ...

  2. VS下使用VIM, Visual Studio 安装 VSvim插件 配置 及使用

    简介 VIM是一款很高效的编辑工具,所幸的是VS2012以后支持VIM的插件:VsVim.下面介绍插件的安装.配置及简单使用. 1. 下载安装 去官网下载,双击直接安装后,重新打开VS. https: ...

  3. log4j.properties的详细配置

    log4j.properties的详细配置 log4j.properties的maven配置 <dependency> <groupId>org.scala-lang</ ...

  4. CentOS 7 用 yum 安装 Nginx

    在 CentOS 7 中,直接使用 yum 安装 Nignx 会提示无下载源.因此,需要添加 Nginx 的下载源到 yum: sudo rpm -Uvh http://nginx.org/packa ...

  5. js中的Array数组清空

    var data = new Array();//数组 data.length = 0;//数组的长度等于0,数组的项就会被清空

  6. RabbitMQ学习第四记:路由模式(direct)

    1.什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据.与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机 ...

  7. jQuery方法-queue()

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&quo ...

  8. 微服务(Microservices)和服务网格(Service Mesh)的架构概念

    注:文章内容为摘录性文字,自己阅读的一些笔记,方便日后查看. 微服务(Microservices) 在过去的 2016 年和 2017 年,微服务技术迅猛普及,和容器技术一起成为这两年中最吸引眼球的技 ...

  9. zmq中的router和dealer

    https://segmentfault.com/q/1010000000638839 在zeromq的guide里,它用router/dealer模式做了一个broker client对应ZMQ_R ...

  10. nodejs 在MYSQL 数据库中插入和查询数据

    插入前的数据库: 插入后的数据库: 输出结果: demo var mysql = require('mysql'); var connection = mysql.createConnection({ ...