准备工作

安装CentOS7虚拟机

安装Docker

关闭CentOS7自带的防火墙服务

systemctl disable firewalld
systemctl stop firewalld

修改主机名

vim /etc/hostname
  • k8s-master01(对应主机ip:192.168.91.129)
  • k8s-worker01(对应主机ip:192.168.91.130)
  • k8s-worker02(对应主机ip:192.168.91.131)

配置ip地址

配置3台测试机的/etc/hosts文件(在三台服务器上同步)
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.91.129 k8s-master01
192.168.91.130 k8s-worker01
192.168.91.131 k8s-worker02

获取源文件

(主从节点都需要)wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(主从节点都需要)rpm --import rpm-package-key.gpg
(主节点)yum repolist
(主节点)新建和编辑repo文件:
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
(主节点)
cd /etc/yum.repos.d
scp CentOS-Base.repo docker-ce.repo kubernetes.repo k8s-worker01:/etc/yum.repos.d/
scp CentOS-Base.repo docker-ce.repo kubernetes.repo k8s-worker02:/etc/yum.repos.d/

安装Kubernetes

修改/etc/docker/daemon.json
添加:"exec-opts": ["native.cgroupdriver=systemd"](用于消除安装k8s集群时的警告)

重启docker

systemctl daemon-reload
systemctl restart docker

主从节点安装Kubernetes组件镜像(指定为v1.17.6版本)

更新缓存(主从节点都需要)
yum clean all
yum -y makecache
(若是执行第二步的时候报错:Cannot find a valid baseurl for repo: base/7/x86_64,则检查一下网络问题)
验证源是否可用
  yum list | grep kubeadm(如果提示要验证yum-key.gpg是否可用,输入y)
主从节点安装k8s-1.17.6:yum install -y kubelet-1.17.6-0 kubeadm-1.17.6-0 kubectl-1.17.6-0

配置、启动kubelet并设置开机启动(主从节点都需要)

查看相关配置:rpm -ql kubelet
其中,/etc/kubernetes/manifests 为清单目录,/etc/sysconfig/kubelet 为配置文件,/usr/lib/systemd/system/kubelet.service 为主程序。
增加配置信息:
vim /etc/sysconfig/kubelet
  KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
  KUBELET_EXTRA_ARGS="--fail-swap-on=false"(直接关闭交换分区会导致虚拟机内存资源紧张,故直接配置忽略swap报错,这样在 kubeadm init 的时候,kubelet才能正常运行)
启动kubelet并设置开机启动(这里可以不执行启动命令,在主节点初始化时/从节点加入集群时会启动kubelet)
  systemctl enable kubelet

导入k8s及相关docker镜像

集群初始化镜像

先手动将集群初始化镜像文件k8sv1.17.6.tar上传到各个节点的/root目录下
进入各个节点tar所在目录,使用如下命令导入镜像
docker load -i k8sv1.17.6.tar

集群初始化网络镜像

先手动将集群网络组件calico(calico3.13.2.tar,一套开源的网络和网络安全方案)上传到各个节点的/root目录下,集群所有节点都需要导入

导入calico.yml

k8s集群需要的网络插件为3.13版本,集群所有节点都需要导入
cd /root
若出现以下报错,则执行:yum install -y ca-certificates

初始化k8s集群

初始化master节点

kubeadm init --apiserver-advertise-address=192.168.91.129 --kubernetes-version v1.17.6 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.81.0.0/16 --image-repository=registry.aliyuncs.com/google_containers --ignore-preflight-errors=Swap
若出现以下错误:
W0222 21:17:31.258353 10153 validation.go:28] Cannot validate kube-proxy config - no validator is available
W0222 21:17:31.258577 10153 validation.go:28] Cannot validate kubelet config - no validator is available
[init] Using Kubernetes version: v1.17.6
[preflight] Running pre-flight checks
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
[WARNING Swap]: running with swap on is not supported. Please disable swap
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.12. Latest validated version: 19.03
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
To see the stack trace of this error execute with --v=5 or higher
根据报错信息可知,是因为:/proc/sys/net/bridge/bridge-nf-call-iptables 和 /proc/sys/net/ipv4/ip_forward 的内容没有被设置为1
执行以下两条命令即可:
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
echo "1" >/proc/sys/net/ipv4/ip_forward
按照提示在master执行如下操作
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

worker节点加入集群

kubeadm join 192.168.91.129:6443 --token chijon.vjnq37z0titsxbmc --discovery-token-ca-cert-hash sha256:eca67b2c5ae245a6f203bc7de1030828e0f0d9fbdd5e9a640b83ab22a9d39609 --ignore-preflight-errors=Swap
 
若不加这段:--ignore-preflight-errors=Swap,则可能会出现如下报错:
[ERROR Swap]: running with swap on is not supported. Please disable swap

查看集群搭建结果

kubectl get nodes
由于还没有进行网络配置,故集群所有节点的状态为:NotReady
worker节点上面更是会直接报错:
运行 出现 The connection to the server localhost:8080 was refused - did you specify the right host or port? 的错误
  • 出现这个问题的原因是kubectl命令需要使用kubernetes-admin来运行,解决方法如下,将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下,然后配置环境变量
    • echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
    • source ~/.bash_profile
  • 如果某个节点的/etc/kubernetes目录下没有admin.conf这个配置文件,则直接将主节点上的配置文件复制过去

网络安装(主从都需要)

cd /root
kubectl apply -f calico.yaml

kubectl命令自动补全

echo "source <(kubectl completion bash)" >> ~/.bash_profilesource ~/.bash_profile

再次查看集群搭建结果

kubectl get nodes
k8s-master01
可以看到集群所有节点的状态为:Ready
若某台虚拟机关机或断网了,则状态会变为 NotReady,重启或联网之后会自动加入集群,变为 Ready

k8s集群搭建过程详解的更多相关文章

  1. Nacos集群搭建过程详解

    Nacos的单节点,也就是我们最开始使用的standalone模式,配置的数据是默认存储到内嵌的数据库derby中. 如果我们要搭建集群的话,那么肯定是不能用内嵌的数据库,不然数据无法共享.集群搭建的 ...

  2. hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解

    hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解 一,环境: 1,主机规划: 集群中包括3个节点:hadoop01为Master,其余为Salve,节点之间局域网连接 ...

  3. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  4. RabbitMQ 集群安装过程详解

    一.安装Erlang 1.rabbitMQ是基于erlang的,所以首先必须配置erlang环境. 从erlang官网下载 otp 18.3.下载链接:http://erlang.org/downlo ...

  5. 懒人记录 Hadoop2.7.1 集群搭建过程

    懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...

  6. t持久化与集群部署开发详解

    Quartz.net持久化与集群部署开发详解 序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我 ...

  7. 深入浅出—Redis集群的相关详解

    前言: 这篇文章主要介绍了Redis集群的相关,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 注意!要求使用的都是redis3.0以上的版本,因为3.0以上增加了red ...

  8. 分布式实时日志系统(一)环境搭建之 Jstorm 集群搭建过程/Jstorm集群一键安装部署

    最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...

  9. ZooKeeper集群搭建过程

    ZooKeeper集群搭建过程 提纲 1.ZooKeeper简介 2.ZooKeeper的下载和安装 3.部署3个节点的ZK伪分布式集群 3.1.解压ZooKeeper安装包 3.2.为每个节点建立d ...

随机推荐

  1. 看我如何使用 shell 来获取所有 KVM 虚拟机的 IP 地址

    文章目录 脚本说明 脚本展示 效果展示 此脚本的初衷是因为,KVM创建的桥接网卡的虚拟机,无法使用virsh domifaddr命令获取IP,而创建的nat网卡的虚拟机,则可以直接使用virsh do ...

  2. shell脚本的“奇迹暖暖“之行 -- printf彩色输出

    printf \n" \n代表换行 "\e[1;30m \e[0m" 深灰 "\e[1;31m \e[0m" 红色 "\e[1;32m \e ...

  3. 从零开始, 开发一个 Web Office 套件(4):新的问题—— z-index

    <从零开始, 开发一个 Web Office 套件>系列博客目录 这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office ...

  4. Mybatis动态开发

    1.单表动态SQL之if 2.单表动态SQL之foreach 3.单表动态SQL之片段抽取 Sql 中可将重复的 sql 提取出来,使⽤时⽤ include 引⽤即可,最终达到 sql 重⽤的⽬的

  5. PostgreSQL VACUUM 之深入浅出 (三)

    VACUUM 相关参数 对 VACUUM 有了一定的了解之后,下面系统介绍下 VACUUM 相关参数. VACUUM 相关参数主要分为三大类. 第一类 与资源相关参数 #--------------- ...

  6. TestNG基本使用

    TestNG简介 Testng是一套开源测试框架,是从Junit继承而来,testng意为test next generation 创建maven项目,添加依赖 <dependency> ...

  7. C# 使用NPOI处理Excel模板-【前面部分固定,中间是动态的几行,尾部是固定的部分】

    今天同组的兄弟问我,他有一个导出的模板,大概如下: [前面部分固定,中间是动态的几行,尾部是固定的部分].其实这个很像单链表往单链表在指定插入数据. 他问我怎么做才好,他想到的做法是:因为这些动态列的 ...

  8. 微信小程序使用weui扩展组件踩坑

    最近在做微信小程序,引入weui的时候踩坑了好久,这里记录一下遇到的问题. 微信官方文档给了两种weui引入方式: 通过 useExtendedLib 扩展库 的方式引入,这种方式引入的组件将不会计入 ...

  9. 2020ICPC济南站 J.Tree Constructer

    题目大意:给定一棵N个顶点的树,顶点为1~N,对于一个序列A1,A2,-,An,若Ai | Aj == 2^60-1,则会连一条边(i,j).要求求出一个序列,可以唯一确定所给定的树. 思路:考虑到树 ...

  10. kube-scheduler源码分析(2)-核心处理逻辑分析

    kube-scheduler源码分析(2)-核心处理逻辑分析 kube-scheduler简介 kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作 ...