使用kubeadm安装kubernetes 1.15
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的更多相关文章
- 使用kubeadm 安装 kubernetes 1.15.1
简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...
- 在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践
前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernetes由于"scientifically上网"问题举步维艰,本文以实战经 ...
- Centos 使用kubeadm安装Kubernetes 1.15.3
本来没打算搞这个文章的,第一里面有瑕疵(没搞定的地方),第二在我的Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装 也有安装,第三 和社区的问文章比较雷同 https:// ...
- 使用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 / ...
- Kubeadm安装Kubernetes 1.15.1
一.实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.198.200 >=2c >=2G master 192.168.198.201 >=2c ...
- kubeadm安装Kubernetes 1.15 实践
原地址参考github 一.环境准备(在全部设备上进行) 3 台 centos7.5 服务器,网络使用 Calico. IP地址 节点角色 CPU 内存 Hostname 10.0.1.45 mast ...
- Centos7 使用 kubeadm 安装Kubernetes 1.13.3
目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...
- 使用 kubeadm 安装 kubernetes v1.16.0
近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系 统:CentOS Linux release 7.6 Docke ...
- kubeadm安装kubernetes V1.11.1 集群
之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...
随机推荐
- Java-Class-I:org.springframework.web.mutipart.MutipartFile
ylbtech-Java-Class-I:org.springframework.web.mutipart.MutipartFile 1.返回顶部 2.返回顶部 1.1. import org.s ...
- VS下使用VIM, Visual Studio 安装 VSvim插件 配置 及使用
简介 VIM是一款很高效的编辑工具,所幸的是VS2012以后支持VIM的插件:VsVim.下面介绍插件的安装.配置及简单使用. 1. 下载安装 去官网下载,双击直接安装后,重新打开VS. https: ...
- log4j.properties的详细配置
log4j.properties的详细配置 log4j.properties的maven配置 <dependency> <groupId>org.scala-lang</ ...
- CentOS 7 用 yum 安装 Nginx
在 CentOS 7 中,直接使用 yum 安装 Nignx 会提示无下载源.因此,需要添加 Nginx 的下载源到 yum: sudo rpm -Uvh http://nginx.org/packa ...
- js中的Array数组清空
var data = new Array();//数组 data.length = 0;//数组的长度等于0,数组的项就会被清空
- RabbitMQ学习第四记:路由模式(direct)
1.什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据.与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机 ...
- jQuery方法-queue()
<!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&quo ...
- 微服务(Microservices)和服务网格(Service Mesh)的架构概念
注:文章内容为摘录性文字,自己阅读的一些笔记,方便日后查看. 微服务(Microservices) 在过去的 2016 年和 2017 年,微服务技术迅猛普及,和容器技术一起成为这两年中最吸引眼球的技 ...
- zmq中的router和dealer
https://segmentfault.com/q/1010000000638839 在zeromq的guide里,它用router/dealer模式做了一个broker client对应ZMQ_R ...
- nodejs 在MYSQL 数据库中插入和查询数据
插入前的数据库: 插入后的数据库: 输出结果: demo var mysql = require('mysql'); var connection = mysql.createConnection({ ...