准备工作

安装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. Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼

    Spring Cloud并不与Spring MVC类似是一个开源框架,而是一组解决问题的规范(个人理解).解决哪些问题呢?如下: 1)服务管理:⾃动注册与发现.状态监管 2)服务负载均衡 3)熔断 4 ...

  2. 一个接口多个实现Spring如何实现正确注入

    阅读源码的时候,时不时脑子中冒出一个问题:如果自己写一个单例的容器,一个接口多个实现怎么正确地将每个实现都缓存容器中并准确地注入呢?阅读Dubbo源码时也有类似的问题冒出来. 对于@Autowire注 ...

  3. MySQL高级优化

    MySQL高级 1.索引是什么? (1)索引是排好序可以快速查找的数据结构 (2)方便快速查找,索引实际上也是一张表所以也是要占内存的 2.索引存在哪里? (1)InnoDB引擎 ①索引是和数据存放在 ...

  4. netty系列之:channelPipeline详解

    目录 简介 ChannelPipeline 事件传递 DefaultChannelPipeline 总结 简介 我们在介绍channel的时候提到过,几乎channel中所有的实现都是通过channe ...

  5. NSSCTF-[鹤城杯 2021]A_MISC

    下载压缩包,解压需要输入密码,使用winhex打开发现不是zip的伪加密,然后使用爆破工具进行爆破得到密码 解压压缩包获得一个png打开是一个URL,常用的都知道,百度网盘的文件分享的链接,复制打开U ...

  6. 可视化里程碑:可拖拽使用的可视化BI工具

    在数据量越来越大的今天,如何利用好数据,更好的为人类社会服务,成为人们所关心的话题,而其中数据可视化作为最后一个环节,也是人们最为直观的感受,自然而然备受重视.同质化的应用越来越多,应用开发者也开始在 ...

  7. Typora下载及MarkDown语法详解

    写博客的重要性 作为一名程序员,写博客已经成了一项基本技能和素养.为什么要写博客?因为它能将我们学习的知识总结起来,提高我们对知识的深层次理解,还能将我们所学知识记录下来,以便于以后回忆.要想写博客, ...

  8. .Net 新一代编译器 Roslyn 会带来怎样的影响?

    .Net 新一代编译器 Roslyn 会带来怎样的影响? Roslyn是微软创建的一个.NET编译器平台,该项目于2014年4月3日开源. 最初 C# 语言的编译器是用 C++ 编写的,后来微软推出了 ...

  9. Java -- List与数组转换

    list转数组 使用for循环 使用list.toArray(new String[]),不可以强制转换list.toArray(),因为数组在jvm是一个object表示的,是一个对象 数组转lis ...

  10. Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法

    转至:https://www.jb51.net/article/20367.htm 添加用户(随着用户的创建,自动产生与用户同名的schema) CREATE USER "TESTER&qu ...