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.rhkb.cn/news/306550.html

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

相关文章

游标的定义和类型

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 游标的基本概念 游标从字面上理解为游动的光标&#xff0c;可以使用 Excel 表格来想象游标的作用&#xff0c;游标指向每一行&#xff0c;通过游标访问每行数据。 在 Orac…

6.3Python之字典的内置方法

1、创建字典 dict.fromkeys() &#xff1a;可将列表、元组、集合转为字典 knowledgeL [语文, 数学, 英语] scoresD1 dict.fromkeys(knowledgeL, 60) print(scoresD1) knowledgeT (Chinese, Math, English) scoresD2 dict.fromkeys(knowledgeT, 60) print(scoresD2) knowl…

【Web】CTFSHOW-ThinkPHP5-6反序列化刷题记录(全)

目录 web611 web612 web613-622 web623 web624-626 纯记录exp&#xff0c;链子不作赘述 web611 具体分析&#xff1a; ThinkPHP-Vuln/ThinkPHP5/ThinkPHP5.1.X反序列化利用链.md at master Mochazz/ThinkPHP-Vuln GitHub 题目直接给了反序列化入口 exp: <?ph…

Web中使用Weblogic用户

WebLogic用户&#xff0c;组设置 1. 登录weblogic console, domain结构中选择Security Realms&#xff0c;显示安装时默认创建的Realm &#xff1a; myrealm 2. 点击myrealm, 选择 users and Group&#xff0c; 追加用户和组 选择既存的权限组追加到新规的组中&#xff0c;赋予…

面试:如何设计一个注册中心?

大家好&#xff0c;我是田哥 上周&#xff0c;一位群里的朋友反馈面试情况&#xff1a; 今天&#xff0c;给大家分享如何设计一个注册中心。其实这个问题&#xff0c;我之前在知识星球里分享过&#xff0c;可能是因为时间比较久了&#xff0c;加上这位朋友加入不久&#xff0c;…

力扣HOT100 - 160. 相交链表

解题思路&#xff1a; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if…

雨云:不一样的服务器体验

引言 在当今数字化时代&#xff0c;服务器已经成为了许多企业和个人不可或缺的一部分。无论是建立网站、存储数据还是运行应用程序&#xff0c;都需要一个稳定可靠的服务器来支持。然而&#xff0c;在众多的服务器提供商中&#xff0c;选择一个适合自己需求的并不容易。今天我要…

spispi

数据手册里面有这么一段解释&#xff0c;就是说如果我们开启了看门狗&#xff0c;那么LSI就会跟随强制打开&#xff0c;等待LSI稳定之后就可以自动为独立看门狗提供时钟了。所以这里的第一步开启时钟不需要我们写代码来执行 2.写入预分频器和重装寄存器 在写入这两个寄存器之前…

git知识

如何将develop分支合并到master分支 #简单版 git checkout master git pull origin master git merge origin/develop # 解决可能的冲突并提交 git push origin master#复杂版 git checkout master # 拉取远程 master 分支的最新代码并合并到本地 git pull origin master # 拉…

Linux:软件包管理器 - yum

Linux&#xff1a;软件包管理器 - yum Linux的软件安装方式源代码安装rpm包安装yum安装 yum三板斧yum listyum installyum remove yum生态yum源 Linux的软件安装方式 源代码安装 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序 源代码安…

若依ts版本(vue3+element plus+ts)

1、项目简介 本项目参考若依前后端分离版&#xff0c;前端由[若依vue3]改写为ts版本[ruoyi-web-vue3-ts]&#xff0c;后端对[若依V3.8.7]进行了修改[后端版本分支vue3.ts.3.8.7]&#xff0c;具体文档参见[若依官方文档]。本项目对部分代码做了优化&#xff0c;增加了activiti7…

LeetCode-5. 最长回文子串【字符串 动态规划】

LeetCode-5. 最长回文子串【字符串 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;动态规划五部曲解题思路二&#xff1a;动态规划[版本二]解题思路三&#xff1a;0 题目描述&#xff1a; 给你一个字符串 s&#xff0c;找到 s 中最长的回文 子串 。 如果字符串的反序…

【MYSQL】索引机制概述

由于MySQL是作为存储层部署在业务系统的最后端&#xff0c;所有的业务数据最终都要入库落盘&#xff0c;但随着一个项目在线上运行的时间越来越久&#xff0c;数据库中的数据量自然会越来越多&#xff0c;而数据体积出现增长后&#xff0c;当需要从表查询一些数据时&#xff0c…

网络安全入门教程(非常详细)从零基础入门到精通

网络安全是一个庞大而不断发展的领域&#xff0c;它包含多个专业领域&#xff0c;如网络防御、网络攻击、数据加密等。介绍网络安全的基本概念、技术和工具&#xff0c;逐步深入&#xff0c;帮助您成为一名合格的网络安全从业人员。 一、网络安全基础知识 1.计算机基础知识 …

蓝桥杯省赛冲刺(3)广度优先搜索

广度优先搜索&#xff08;Breadth-First Search, BFS&#xff09;是一种在图或树等非线性数据结构中遍历节点的算法&#xff0c;它从起始节点开始&#xff0c;按层级逐步向外扩展&#xff0c;即先访问离起始节点最近的节点&#xff0c;再访问这些节点的邻居&#xff0c;然后是邻…

DCI-BOX 数据中心互联扩容设备

2U DCI-BOX是针对DCI数据互联开发的一款高性能、大容量DCI平台 恒通未来2U DCI-BOX 优势&#xff1a; 随着5G网络的演进&#xff0c;人们对大数据需求越来越旺盛&#xff0c;2U DCI-BOX是针对DCI数据互联开发的一款高性能、大容量DCI平台。 1. 单机箱最大容量6.4T,单100G功耗…

设计模式——简单工厂模式

设计模式——简单工厂模式 什么是简单工厂模式简单工厂模式的优点 我们今天接着来看设计模式的简单工厂模式&#xff0c;如果还没看过上一篇的单列模式的小伙伴可以点击这里&#xff1a; https://blog.csdn.net/qq_67693066/article/details/136603292 什么是简单工厂模式 简单…

【c语言】结构体的访问

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

宏景eHR customreport/tree SQL注入漏洞复现

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR customreport/tree 接口处存在SQL注入漏洞,未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令,从而窃取数据库…

【cocos creator】【TS】贝塞尔曲线,地图之间显示曲线,顺着曲线移动

参考&#xff1a; https://blog.csdn.net/Ctrls_/article/details/108731313 https://blog.csdn.net/qq_28299311/article/details/104009804 const { ccclass, property } cc._decorator;ccclass export default class mapPanel extends cc.Component {property(cc.Node)pla…