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. Linux/UNIX上安装Mysql

    接下来我们在 Centos 系统下使用 yum 命令安装 MySql: 检测系统是否自带安装 mysql: rpm -qa | grep mysql 如果你系统有安装,那可以选择进行卸载: rpm - ...

  2. 4、APP FPS测试

    什么是FPS FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数.FPS是测量用于保存.显示动态视频的信息数量.每秒钟帧数愈多,所显示的动作就会愈流畅.通常,要避免动作不 ...

  3. POJ 2451 Uyuw's Concert (半平面交)

    题目链接:POJ 2451 Problem Description Prince Remmarguts solved the CHESS puzzle successfully. As an awar ...

  4. Flink 配置文件详解

    前面文章我们已经知道 Flink 是什么东西了,安装好 Flink 后,我们再来看下安装路径下的配置文件吧. 安装目录下主要有 flink-conf.yaml 配置.日志的配置文件.zk 配置.Fli ...

  5. 2-vim-打开和新建文件-01-打开/新建文件/打开定位到文件指定行

    1.新建或打开文件 命令: vim 文件名 在终端中输入vi在后面跟上文件名即可. 如果文件已经存在,会直接打开文件. 如果文件不存在,会新建一个文件. 2.打开文件并定位到文件指定行. 命令: vi ...

  6. Pregel的执行过程

  7. 编写Storm程序

  8. 文件上传到ftp服务工具类

    直接引用此java工具类就好 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcep ...

  9. python的format函数是什么意思format是什么意思

    format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序 ...

  10. 安装和使用pyspider框架时遇到的问题

    安装pyspider, 直接cmd中输入 pip install pyspider, 而后提示报错 从网上找到解决方法,pycurl需要根据python版本采用wheel方法安装. 下载链接为http ...