Centos7 K8S 集群 - kubeadm搭建方式

机器准备

搭建环境是centos7, 四核心4G内存四台机器

一个master节点,一个etcd,两台node

机器名称IP 地址
master192.168.1.127
node1192.168.1.129
node2192.168.1.130
node3192.168.1.131

机器时间同步

各节点时间要求精确同步,可以直接联网的话,使用

systemctl start chronyd.service
systemctl enable chronyd.service

or

ntpdate -u cn.pool.ntp.org

节点的DNS解析

设置主机名

hostnamectl set-hostname master/node01/node02/node03....

在每台机器上向 /etc/hosts文件添加

cat <<EOF >>/etc/hosts 
192.168.1.127 master 
192.168.1.129 node01 
192.168.1.130 node02
192.168.1.131 node03
EOF

每台机器上关闭firewalld,禁用swap设备,关闭selinux

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

直接修改文件

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭swap设备

swapoff -a
sed -i 's /.* swap.*/#&/' /etc/fstab

or 直接修改文件(/etc/fstab)

注释这一行
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

查看swap是否被正确关闭

free -m

每台机器设置iptables

cat >/etc/sysctl.d/k8s.conf <<EOF 
net.bridge.bridge-nf-call-ip6tables =1 
net.bridge.bridge-nf-call-iptables =1 
EOF
sysctl --system

设置国内源

yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache

给每台机器安装docker

$ yum -y install wget
# 添加docker yum源
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
# 安装
$ yum -y install docker-ce
# 设置开机启动
$ systemctl enable docker
# 启动docker
$ systemctl start docker

集群搭建

每台机器都安装kubeadm、kubelet、kubectl

这三个工具的国内镜像在阿里云上有,进去对应自己的机器版本选链接,配置仓库如下:

cat <<EOF >/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 
EOF

配置过后安装

yum install -y kubelet kubeadm kubectl

安装过程中,可能由于Google和阿里的同步问题,导致gpgcheck不通过,可以使用

yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0 --nogpgcheck

设置kubelet开机自启动

systemctl enable kubelet

注意这里不用启动kubelet,因为master还没有初始化,日志会提示缺少yaml文件,kubelet无法启动

Master节点的初始化

指令

  • kubeadm init (master节点初始化)
  • kubeadm join (node节点加入集群)
  • kubeadm reset (消除执行过后的init or join 的影响)

初始化

kubeadm init \--apiserver-advertise-address=192.168.1.127 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.17.0 \--service-cidr=10.1.0.0/16 \--pod-network-cidr=10.244.0.0/16 \--ignore-preflight-errors=swap
  • apiserver地址即Master本机地址
  • pod-network-cidr即pod网络对应的网段,因为kubernetes自身没有设计pod网络,所以需要其余的网络插件,常用的是flannel,这个地址是flannel默认的

正常情况

可以看到以下信息
在这里插入图片描述

 kubeadm join 192.168.1.127:6443 --token 2yxrh1.eet93u5rgkanl5vz \--discovery-token-ca-cert-hash sha256:238315c75883d5abe8f8e898acd68a2618fce3053f383cefa456db5f7aaa05f1
  • 这是其他机器访问的凭证

失败情况及其解决方法

错误查询手段

systemctl status kubelet

不过这是大概率是没有正常运行的,前面也提到了,只有正常init生成config的yaml文件,kubelet才能running
然后查看kubelet运行日志

journalctl -xeu kubelet

错误解决

swap没有禁用,free -m 命令查看

selinux没有禁用

docker和kubernetes启动参数cgroup-driver不同

通过 docker info 查看 cgroup-driver参数

同时修改 /etc/docker/daemon.json

{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}

systemctl restart docker
systemctl status docker

curl -sSL http://localhost:10248/healthz‘ failed with error: Get “http://loc

怀疑是内核参数的问题,修改内核

root@master1:~# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.confroot@master1:~# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
root@master1:~# echo 'net.bridge.bridge-nf-call-ip6tables = 0 ' >> /etc/sysctl.conf
root@master1:~# echo 'net.bridge.bridge-nf-call-iptables = 1 ' >> /etc/sysctl.conf
root@master1:~# echo 'net.bridge.bridge-nf-call-arptables = 0' >> /etc/sysctl.confroot@master1:~# sysctl -p
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 0

失败后通过 kubeadm reset 命令,删除不必要的文件

初始化成功的提示

你已经成功初始化了master
为了使用集群,你需要为机器的用户提供证书
你现在需要取安装集群pod网络插件
之后你才可以将其余节点加入集群

为机器用户提供证书

kubernetes提供双向认证机制,只有用户名下有其CA证书文件才可以对集群进行操作
模版(对非root用户)

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

设置root用户

mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config

安装网络插件

拉取flannel镜像

docker pull quay.io/coreos/flannel:v0.11.0-amd64

部署flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Node节点加入集群

启动转发功能

sysctl -w net.ipv4.ip_forward=1

通过在Node机器执行集群凭证,就可以加入集群

 kubeadm join 192.168.1.128:6443 --token 2yxrh1.eet93u5rgkanl5vz \--discovery-token-ca-cert-hash sha256:238315c75883d5abe8f8e898acd68a2618fce3053f383cefa456db5f7aaa05f1

如果tooken 和 CA证书过期了,可以在Master节点用以下命令

# 生成 token
kubeadm token create# CA证书生成
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'# token 查询
kubeadm token list

加入集群的节点会使用Master设置的源,下载flannel、kube-proxy、coredns、pause四个镜像(如果无法正常下载,可以将这些镜像从master scp到node节点docker load即可)

可使用 docker images 查看

root@node01 ~]# docker images
REPOSITORY                                           TAG       IMAGE ID       CREATED        SIZE
rancher/mirrored-flannelcni-flannel                  v0.20.2   b5c6c9203f83   8 days ago     59.6MB
rancher/mirrored-flannelcni-flannel-cni-plugin       v1.1.0    fcecffc7ad4a   6 months ago   8.09MB
registry.aliyuncs.com/google_containers/kube-proxy   v1.17.0   7d54289267dc   3 years ago    116MB
registry.aliyuncs.com/google_containers/coredns      1.6.5     70f311871ae1   3 years ago    41.6MB
registry.aliyuncs.com/google_containers/pause        3.1       da86e6ba6ca1   4 years ago    742kB

查看集群状态

主节点执行

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   89d    v1.17.0
node01   Ready    <none>   7d1h   v1.17.0
node02   Ready    <none>   7d1h   v1.17.0
node03   Ready    <none>   5h3m   v1.17.0

参考资料

  • centos7上用kubeadm搭建kubenetes集群(详细+踩坑记录)
  • 本机虚拟机centos7环境搭建k8s集群-实践篇
  • The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ failed with error: Get “http://loc
  • k8s node节点重启docker后,所有该节点的容器无法运行
  • kubeadm join 使用的 token 过期之后,如何加入集群
  • K8s无法删除状态为terminating的pod解决方法
  • kubernetes node节点加入容器 [ERROR FileContent–proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法设计与分析(超详解!) 第二节 递归与分治

1.递归定义 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。 由分治法产生的子问题往往是原问题的较小模式&#xff0c;这就为使用递归技术提供了方便。在这种情况下&#xff0c;反复应用分治手段&#xff0c;可以使子问题与原问题类型一致…

LeetCode-热题100:226. 翻转二叉树

题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a; root [4,2,7,1,3,6,9] 输出&#xff1a; [4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a; root [2,1,3] 输出&#xff1a; […

GlusterFS 分布式文件系统 搭建及使用

一、GlusterFS GlusterFS 是一个开源的分布式文件系统&#xff0c;旨在提供高性能、可扩展性和可靠性&#xff0c;适用于现代数据中心和云环境。它以横向扩展的方式设计&#xff0c;可以在多台服务器之间共享文件系统&#xff0c;为应用程序提供统一的文件存储服务。 Gluster…

【C 数据结构】线性表

文章目录 【 1. 线性表 】【 2. 顺序存储结构、链式存储结构 】【 3. 前驱、后继 】 【 1. 线性表 】 线性表&#xff0c;全名为线性存储结构&#xff0c;线性表结构存储的数据往往是可以依次排列的&#xff08;不考虑数值大小顺序&#xff09;。 例如&#xff0c;存储类似 {1…

蓝桥杯-数组分割

问题描述 小蓝有一个长度为 N 的数组 A 「Ao,A1,…,A~-1]。现在小蓝想要从 A 对应的数组下标所构成的集合I 0,1,2,… N-1 中找出一个子集 民1&#xff0c;那么 民」在I中的补集为Rz。记S∑reR 4&#xff0c;S2∑rERA,&#xff0c;我们要求S、和 S,均为偶数&#xff0c;请问在这…

c语言-----数组知识汇总

前言 本文为我学习数组知识点之后&#xff0c;对c语言的数组部分进行的知识点汇总。 简单数组介绍 简单来说&#xff0c;数组就是一个数据组&#xff0c;像一个箱子&#xff0c;里面放有多个数据。 [1,2,3,4,5] 数组的定义 基础定义 语法&#xff1a; 数据类型 数组名[数组…

代码随想录-算法训练营day12【休息,复习与总结】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 ● day 12 周日休息&#xff08;4.14&#xff09; 目录 复习与总结 0417_图论-太平洋大西洋水流问题 0827_图论-最大人工岛 复习与总结 二刷做题速度提升了一大截&#xff0c;ヾ(◍∇◍)&#xff89;&#xff9e;加…

基于SpringBoot实现的在线拍卖系统

系统开发环境 编程语言&#xff1a;Java数据库&#xff1a;MySQL容器&#xff1a;Tomcat工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统实现 管理员功能模块 首页 修改密码 用户管理 商品类型管理 拍卖商品 竞拍公告 轮播图 历史竞拍管理 竞拍订单管理 留言板管理 用户…

多输入多输出 | Matlab实现XGboost多输入多输出预测

多输入多输出 | Matlab实现XGboost多输入多输出预测 目录 多输入多输出 | Matlab实现XGboost多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现XGboost多输入多输出预测 1.data为数据集&#xff0c;10个输入特征&#xff0c;3个输出变量…

使用 vue3-sfc-loader 加载远程Vue文件, 在运行时动态加载 .vue 文件。无需 Node.js 环境,无需 (webpack) 构建步骤

加载远程Vue文件 vue3-sfc-loader vue3-sfc-loader &#xff0c;它是Vue3/Vue2 单文件组件加载器。 在运行时从 html/js 动态加载 .vue 文件。无需 Node.js 环境&#xff0c;无需 (webpack) 构建步骤。 主要特征 支持 Vue 3 和 Vue 2&#xff08;参见dist/&#xff09;仅需…

UDP实现Mini版在线聊天室

实现原理 只有当客户端先对服务器发送online消息的时候&#xff0c;服务器才会把客户端加入到在线列表。当在线列表的用户发消息的时候&#xff0c;服务器会把消息广播给在线列表中的所有用户。而当用户输入offline时&#xff0c;表明自己要下线了&#xff0c;此时服务器把该用…

服务器docker应用一览

文章目录 一、需求概况二、业务流程三、运行效果四、实现过程1. 基础前提2. 源码放送3.核心代码4. 项目打包5.部署步骤 一、需求概况 现有某云主机服务器&#xff0c;用来做项目演示用&#xff0c;上面运行了docker应用&#xff0c;现希望有一总览页面&#xff0c;用来展示部署…

HC-SR04(超声波模块)

工具 1.Proteus 8 仿真器 2.keil 5 编辑器 原理图 讲解 简介 HC-SR04超声波模块是一种常用的测距模块&#xff0c;通过不断检测超声波发射后遇到障碍物所反射的回波&#xff0c;从而测出发射和接收回波的时间差&#xff0c;并据此求出距离。它主要由两个压电陶瓷超声传感器…

Centos7查看内存使用情况

Centos7查看内存使用情况 free -b&#xff1a;以字节为单位显示内存使用情况。-k&#xff1a;以KB为单位显示内存使用情况&#xff08;默认选项&#xff09;。-m&#xff1a;以MB为单位显示内存使用情况。-g&#xff1a;以GB为单位显示内存使用情况。-t&#xff1a;在输出的最…

C++知识点总结(29):递归练习

一、满足条件的值 1. 审题 已知&#xff1a; S 1 2 4 7 11 16 … S12471116… S12471116… 递归求解刚好大于等于 5000 5000 5000 时 S S S 的值。 2. 参考答案 #include <iostream> using namespace std;// 定义递归函数&#xff0c;计算第x个数的值 int f(…

【Python】使用OPC UA创建数据服务器

目录 准备工作服务器设置创建或获取节点设置节点值启动服务器查看服务器客户端总结 在工业自动化和物联网&#xff08;IoT&#xff09;领域&#xff0c;OPC UA&#xff08;开放平台通信统一架构&#xff09;已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于…

Mixed-Query Transformer:统一的图像分割架构

Mixed-Query Transformer:统一的图像分割架构 摘要IntroductionRelated WorkMethodMQ-Former ArchitectureObject Query Strategies Mixed-Query Transformer: A Unified Image Segmentation Architectur 摘要 在现有的一体化图像分割模型中&#xff0c;要么在多个任务上采用统…

学浪已购买视频怎么下载到本地?

许多学习者在学浪购买了丰富的课程&#xff0c;然而&#xff0c;一些课程存在时间限制&#xff0c;使得学习者希望将其下载并永久保存。在这里&#xff0c;我们将介绍一款名为小浪助手的工具&#xff0c;它能够帮助你轻松将学浪已购买的视频下载到本地&#xff0c;让学习变得更…

Django处理枚举(枚举模型)以及source的使用

Django处理枚举-枚举模型 1、定义模型类、序列化器类2、对上面这些场景使用source参数3、支持连表查询4、自定义序列化输出方法5、案例5 1、定义模型类、序列化器类 定义模型类models.py&#xff1b;项目模型类、接口模型类、用例模型类 from django.db import modelsclass T…

图书管理系统!牛逼!

今天给大家分享一套基于SpringbootVue的图书管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文末自取) ​一、系统运行图&#xff08;设计报告和接口文档&#xff09; 1、登陆页面 2、后台页面 3、设计报告包含接口文档 二、系统搭建视频教程 源码…