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. Python代码规范问题及解决

    Python代码规范问题及解决 为了养成使用Python编程好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8 只是 ...

  2. jquery 弥补ie6不支持input:hover状态

    <!doctype html><html>    <head>    <meta charset="utf-8">    <t ...

  3. JUC源码分析-线程池篇(三)Timer

    JUC源码分析-线程池篇(三)Timer Timer 是 java.util 包提供的一个定时任务调度器,在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次. 1. Ti ...

  4. VScode Python no module的解决方法

    在lauch.json中,修改 "env": {}为 "env": {"PYTHONPATH":"${workspaceRoot} ...

  5. jquery插件小集合

    一.滑动轮播插件Swiper Swiper官网http://www.swiper.com.cn/, 这款插件移动端,pc端均试用 二.jquery-tmpl----让你从拼接字符串中解放出来 官方下载 ...

  6. C-Ubuntu中MySQL出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

    卸载原先的MySQL,重新安装过程中没有提示设置密码, 当键入命令:mysql -uroot -p; 不知密码是什么,输入主机的密码以及不输入密码,回车后都出现标题错误. 寻找多篇相关博文,验证如下博 ...

  7. JQuery日记6.7 Javascript异步模型(二)

    异步模型看起来非常美,但事实上它也是有天生缺陷的.看以下代码 try { setTimeout( function(){ throw new Error( '你抓不到我的!' ); }, 100); ...

  8. python--reflect

    一.反射 python 中用字符串的方式操作对象的相关属性,python 中一切皆对象,都可以使用反射 用eval 有安全隐患,用 反射就很安全 1.反射对象中的属性和方法 class A: a_cl ...

  9. ZMQ面面观

    ZMQ是什么? 这是个类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连 ...

  10. [转]sourceforge文件下载过慢

    sourceforge文件下载过慢,可以用下面网址镜像下载, 通过 下载Sourceforge等国内无法下载站点文件的另一种方法博文,好像主站点是 https://www.mirrorservice. ...