K8S集群安装

这篇具有很好参考价值的文章主要介绍了K8S集群安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、环境初始化

1、检查操作系统的版本

# 此方式下安装kubernetes集群要求Centos版本要在7.5或之上
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

2、主机名解析

为了方便后面集群节点间的直接调用,在这配置一下主机名解析,企业中推荐使用内部DNS服务器

# 主机名成解析 编辑三台服务器的/etc/hosts文件,添加下面内容
192.168.109.100  master
192.168.109.101  node1
192.168.109.102  node2

3、时间同步

kubernetes要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间。

企业中建议配置内部的时间同步服务器

# 启动chronyd服务
[root@master ~]# systemctl start chronyd
# 设置chronyd服务开机自启
[root@master ~]# systemctl enable chronyd
# chronyd服务启动稍等几秒钟,就可以使用date命令验证时间了
[root@master ~]# date

4、禁用iptables和firewalld服务

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

# 1 关闭firewalld服务
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
# 2 关闭iptables服务
[root@master ~]# systemctl stop iptables
[root@master ~]# systemctl disable iptables

5、禁用selinux

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
vim /etc/selinux/config
# 注意修改完毕之后需要重启linux服务
SELINUX=disabled

K8S集群安装

6、禁用swap分区

swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用

启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备

但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
vim /etc/fstab

# 注意修改完毕之后需要重启linux服务
 UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot    xfs     defaults        0 0
 /dev/mapper/centos-home /home                      xfs     defaults        0 0
# /dev/mapper/centos-swap swap                      swap    defaults        0 0

K8S集群安装

7、修改linux的内核参数

# 修改linux的内核参数,添加网桥过滤和地址转发功能
vim /etc/sysctl.d/kubernetes.conf
# 编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 重新加载配置
[root@master ~]# sysctl -p

# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter

# 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter

K8S集群安装

8、配置ipvs功能

在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的。

两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

# 1 安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadmin -y

# 2 添加需要加载的模块写入脚本文件
[root@master ~]# cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

K8S集群安装

# 3 为脚本文件添加执行权限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

# 4 执行脚本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules

# 5 查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

K8S集群安装

假如有报错:modprobe: FATAL: Module nf_conntrack_ipv4 not found.

modprobe: FATAL: Module nf_conntrack_ipv4 not found.

nf_conntrack_ipv4替换为nf_conntrack

modprobe -- nf_conntrack_ipv4
#	替换为 ==>
modprobe -- nf_conntrack

9、重启服务器

上面步骤完成之后,需要重新启动linux系统

[root@master ~]# reboot

二、安装Docker

1、切换镜像源

[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

2、查看当前镜像源中支持的docker版本

后续要安装docker-ce-18.06.3.ce-3.el7这个版本。

[root@master ~]# yum list docker-ce --showduplicates

K8S集群安装

3、安装特定版本的docker-ce

# 必须指定--setopt=obsoletes=0,否则yum会自动安装更高版本
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

4、添加一个配置文件

Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs

[root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF >  /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
EOF

K8S集群安装

5、启动docker

[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker

6、检查docker状态和版本

[root@master ~]# docker version

K8S集群安装

三、安装kubernetes组件

1、配置国内镜像

由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置 。

[root@master ~] 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
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
 http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

2、安装kubeadm、kubelet和kubectl

# 安装kubeadm、kubelet和kubectl
[root@master ~] 
yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

配置kubelet的cgroup

# 编辑/etc/sysconfig/kubelet,添加下面的配置
[root@master ~] vim /etc/sysconfig/kubelet

KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

3、设置kubelet开机自启

# 4 设置kubelet开机自启
[root@master ~]# systemctl enable kubelet

4、准备集群镜像资源

在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看。

kubeadm config images list

K8S集群安装

下载镜像
此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案(先下载镜像,然后再安装K8s)


images=(
    kube-apiserver:v1.17.4
    kube-controller-manager:v1.17.4
    kube-scheduler:v1.17.4
    kube-proxy:v1.17.4
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)

for imageName in ${images[@]} ; do
 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

K8S集群安装

查看已经下载的docker镜像

docker images

K8S集群安装

5、集群安装

只需要在master节点执行

kubeadm init --kubernetes-version=v1.17.4

K8S集群安装

执行以下命令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

node节点上执行,加入集群

kubeadm join 172.28.70.237:6443 --token xvwlc0.kod1s71j4aomv9cw \
    --discovery-token-ca-cert-hash sha256:44e81dcab071f9dc64604d974b95bad52af43c54bdf36255911c98e0978d7e54

查看集群节点

kubectl get nodes

K8S集群安装

6、安装网络插件(只需要在master执行)

CSDN地址

https://download.csdn.net/download/weixin_44624117/87960885

下载配置文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

使用配置文件启动fannel

kubectl apply -f kube-flannel.yml

稍等片刻,再次查看集群节点的状态(可能需要几分钟)

kubectl get nodes

K8S集群安装文章来源地址https://www.toymoban.com/news/detail-508477.html

到了这里,关于K8S集群安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【K8S系列】快速初始化⼀个最⼩集群

    走得最慢的人,只要不丧失目标,也比漫无目的地徘徊的人走得快。 文章标记颜色说明: 黄色 :重要标题 红色 :用来标记结论 绿色 :用来标记一级重要 蓝色 :用来标记二级重要 希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言

    2024年02月04日
    浏览(50)
  • 云原生之深入解析如何使用Vagrant Kubespray快速初始化K8S集群

    Vagrant 是一款用于构建及配置虚拟开发环境的软件,采用 Ruby 编写,主要以命令行方式运行。其主要使用 Oracle VirtualBox 提供虚拟化系统,与 Chef,Salt,Puppet 等环境配置管理软件搭配使用,可以实现快速搭建虚拟开发环境。 Kubespray 是利用 Ansible 工具,通过 SSH 协议批量让指定

    2024年02月15日
    浏览(43)
  • K8s-k8s集群部署-6-主节点初始化和calico安装

    本文章属个人学习整理的对应笔记,学习内容来尚硅谷的培训课,有兴趣的同学可以跳转下方链接 【云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps】https://www.bilibili.com/video/BV13Q4y1C7hS?p=71vd_source=08192e8d3b82bf20dfe6807a2901dd9e kubeadm init   --apiserver-advertise-address=192.168.181.100   --

    2024年02月22日
    浏览(45)
  • 初始化k8s(启动)

    一位普通的程序员,慢慢在努力变强! 温馨提示:初始化k8s的前置配置,请查看以下连接! k8s初始化前的基础配置 提示:如果你是单机,需要开启污点 本章节完成了,各位正在努力的程序员们,如果你们觉得本文章对您有用的话,或者是你学到了一些东西,希望用您那漂亮

    2024年02月11日
    浏览(47)
  • 云计算(一)K8S初始化问题

            作者公司使用的是K8S底层做云计算,这天有个节点发布的时候卡住了,解决方式分为长短期。                作者跟运维做了一些分析讨论和解决方案,涉及到许多K8S相关的知识,有兴趣的同学可以看看这个原理分析过程。     云计算是一种基于互联网的计算

    2024年02月04日
    浏览(44)
  • SpringBoot集成kubernetes-client升级k8s后初始化失败问题

    SpringBoot集成kubernetes-client升级k8s后初始化失败问题 1.问题描述 程序以前使用的k8s版本是1.16,fabric8.kubernetes-client的版本是4.10.2,springboot版本是2.3.5。由于环境切换,这次需要升级k8s的版本,现在将k8s版本升级到了1.26,程序中使用了新配置的certificate-authority-data,client-certific

    2024年02月10日
    浏览(47)
  • 解决K8s安装中节点初始化时 [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ 问题.

    问题描述: 安装K8s时,在节点初始化过程中出现[kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz’ failed with error: Get “http://localhost:10248/healthz”: dial tcp 127.0.0.1:10248: connect: connection refused.报错。 解决方法: 1、驱动问题,即docker的驱动与kubelet 驱动不一致 2、1

    2024年02月16日
    浏览(48)
  • k8s初始化报错[kubelet-check] Initial timeout of 40s passed.

    使用kubeadm进行k8s部署,在初始化的时候,遇到如下 一直卡在了[kubelet-check] Initial timeout of 40s passed.,查看kubelet日志 就出现这个错误,我几个node的IP地址检查过好多遍也没问题 上网找了很多方法都解决不了 查了下资料k8s 已经弃用了docker了,如果安装的kubelet kubeadm kubectl 是V

    2024年02月17日
    浏览(45)
  • k8s初始化报错:[ERROR CRI]: container runtime is not running(已解决)

    如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!          在网上找了好几天解决方案,大部分都是下述方案:         但是当我们尝试之后仍无法解决问题。 如有错误,请联系作者删除 并恳请同行朋友予以斧正,万分感谢!

    2024年02月07日
    浏览(50)
  • 记Kubernetes(k8s)初始化报错:“Error getting node“ err=“node \“k8s-master\“ not found“

    💖The Begin💖点点关注,收藏不迷路💖 \\\"Error getting node\\\" err=\\\"node \\\"k8s-master\\\" not found\\\" 查看日志报错: [root@k8s-master ~]# journalctl -u kubelet 1、操作系统centos7.9 2、docker 版本检查 3、kubelet 版本检查 查找资料: Kubernetes在v1.24版本之后正式放弃了对Docker的支持。这意味着Kubernetes的官方

    2024年04月14日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包