CentOS7 部署 k8s

准备两台虚拟机
192.168.152.129
192.168.152.130
更改主机名
192.168.152.129:
hostnamectl set-hostname k8s-master
hostnamectl
192.168.152.130:
hostnamectl set-hostname k8s-node1
hostnamectl

master节点配置

1.配置hosts

在两台节点上执行vim /etc/hosts
把两台虚拟机ip地址加到后面;

192.168.152.129 k8s-master
192.168.152.130 k8s-node1

2.安装依赖包

yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vimnet-tools git

3.配置防火墙

设置防火墙为 Iptables 并设置空规则
systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

4.关闭selinux

使用命令永久关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0

5.关闭swap分区

临时关闭 swapoff -a
# 永久关闭,下次生效 sed -ri 's/.*swap.*/#&/' /etc/fstab

6.调整内核参数

cat > kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf

7.调整系统时区

rm -f /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai
reboot

8.关闭系统不需要的服务

systemctl stop postfix && systemctl disable postfix

9.设置 rsyslogd 和 systemd journald

mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf << EOF
[Journal]
Storage=persistent
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
SystemMaxUse=10G
SystemMaxFileSize=200M
MaxRetentionSec=2week
ForwardToSyslog=no
EOF
systemctl restart systemd-journald

10.升级系统内核

CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定;
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含initrd16配置,如果没有,再安装一次;
cat /boot/grub2/grub.cfg | grep initrd16
yum --enablerepo=elrepo-kernel install -y kernel-lt
设置开机从新内核启动
grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 7 (Core)'
重启检查
reboot
uname -r

11.加载ip_vs内核模块

modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4

设置下次开机自动加载

cat > /etc/modules-load.d/ip_vs.conf << EOF 
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF

12.安装Docker软件

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager \<br />--add-repo \<br />http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum update -y && yum install -y docker-ce

创建/etc/docker目录;
mkdir /etc/docker
配置daemon;

{"registry-mirrors": ["https://ii3bf0bm.mirror.aliyuncs.com"]
}
EOF

mkdir -p /etc/systemd/system/docker.service.d
重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker

13.安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.21.0-0 kubeadm-1.21.0-0 kubectl-1.21.0-0 --disableexcludes=kubernetes
出现的报错
image.png
解决办法:
编辑 /etc/yum.repos.d/k8s.repo 文件
修改一下参数:
repo_gpgcheck=0
然后重试yum update,就解决了。
这边是禁用了GPG key的验证机制;

systemctl restart kubelet ; systemctl enable kubelet

列出所有版本
yum list kubelet --showduplicates

14.master节点初始化

在 master 上的核心组件,例如 api-server、scheduler、kubelet、etcd、scheduler 等都是以容器的方式运行,由于默认的国外镜像站点可能无法访问,所以这里修改为阿里云镜像下载,同时需要指定版本和pod的网段地址:

kubeadm init --kubernetes-version=v1.21.0 \
--apiserver-advertise-address=0.0.0.0 \       # 后面可以换成master机器的IP尝试下
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

出现的报错:
报错2.jpg
因为有的时候我们要考虑各组件之间的版本兼容性,比如安装k8s的这3个组件的时候就要考虑k8s组件的版本是否与docker,Centos的版本相匹配。出现上述错误的原因就是镜像版本与kubeadm组件要求的版本不匹配,故报错。
可以使用kubeadm config images list查看组件所要求的镜像
解决方法:
需要对版本进行降级,或者重新安装匹配的版本。
/etc/yum.repos.d/kubernetes.repo文件中设置阿里镜像源,该文件若不存在则创建,存在则更改,编辑内容为:

[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

使用**:wq**保存编辑并退出,这样就可以使用阿里源的仓库下载k8s的组件了。
然后使用rpm -qa | egrep kubelet列出kubelet组件安装包的全名,使用yum remove kubelet-1.21.0.x86_64卸载安装包即可。
下载1.14.2版本

yum install -y kubelet-1.14.2 
yum install -y kubeadm-1.14.2 
yum install -y kubectl-1.14.2

执行:
kubeadm init --kubernetes-version=v1.14.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
然后在执行kubeadm init
可能出现的报错:
报错3.jpg
原因显而易见,是因为要下载 k8s.gcr.io的docker镜像,但是国内连不上 https://k8s.gcr.io/v2/
解决方法:
运行 kubeadm init 时加上阿里云镜像的参数 --image-repository=registry.aliyuncs.com/google_containers

如果说某次执行kubeadm init初始化k8s集群失败了,在下一次执行kubeadm init初始化语句之前,先执行kubeadm reset命令。这个命令的作用是重置节点,大家可以把这个命令理解为:上一次 kubeadm init 初始化集群操作失败了,该命令清理了之前的失败环境。
kubeadm reset
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.14.2
初始化成功.jpg
master节点初始化成功!

15.配置kubectl

就是执行初始化成功后输出的那三条命令

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

查看节点信息 kubectl get nodes
此时只能看到master节点,等待其他节点加入进来后即可看到。

16.让集群ready(待另一台node节点加入集群后操作)

在master上执行kubectl get nodes可以看到,最开始看到的是NotReady,原因是pod都是分布在不同的主机上,各个Pod之间无法通信,需要安装CNI网络插件,它才会变成ready,这里选择calico网络。

步骤1:在master上下载配置calico网络的yaml。
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml --no-check-certificate

步骤2:修改calico.yaml里的pod网段。

把calico.yaml里pod所在网段改成kubeadm init时选项--pod-network-cidr所指定的网段,
直接用vim编辑打开此文件查找192,按如下标记进行修改:
# no effect. This should fall within `--cluster-cidr`.
# - name: CALICO_IPV4POOL_CIDR
#   value: "192.168.0.0/16"
# Disable file logging so `kubectl logs` works.
- name: CALICO_DISABLE_FILE_LOGGING
value: "true"把两个‘#’及‘#’后面的空格去掉,并把192.168.0.0/16改成10.244.0.0/16# no effect. This should fall within `--cluster-cidr`.
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
# Disable file logging so `kubectl logs` works.
- name: CALICO_DISABLE_FILE_LOGGING
value: "true"

步骤3:提前下载所需要的镜像。
查看此文件用哪些镜像:grep image calico.yaml
在所有节点(包括master)上把这些镜像下载下来:
for i in calico/cni:v3.14.0 calico/pod2daemon-flexvol:v3.14.0 calico/node:v3.14.0 calico/kube-controllers:v3.14.0 ; do docker pull $i ; done

步骤4:安装calico网络。
kubectl apply -f calico.yaml
安装calico网络.jpg

步骤5:验证结果。
再次在master上运行命令 kubectl get nodes查看运行结果:
可以看到所有节点的状态已经变为是Ready了。

17.测试k8s集群

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
1657005037094.jpg

node节点配置

重复master节点1-13的步骤

将另一台noed节点加入集群

kubeadm join 192.168.152.129:6443 --token yz6m6c.te0cb34ip38ib5gd \--discovery-token-ca-cert-hash sha256:2fb7080429518e03d9262ab01f20d9b8470f047474b32bd6224ca6e123e49156

可能遇到的错误
node报错.jpg
同master13遇到的问题,下载安装1.14.2版本即可。

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

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

相关文章

金蝶云星空,怎么做BI数据可视化分析?

金蝶云星空是一个流程管理方面的软件&#xff0c;如果想要做BI数据可视化分析&#xff0c;还就需要一套BI方案&#xff0c;即一套奥威BI软件金蝶云星空BI方案。 奥威BI软件&#xff0c;负责提供平台和技术&#xff1b;金蝶云星空BI方案&#xff0c;则提供标准化的数据分析模型…

C++(1): std::vector的使用

1. 简述 vector是C编程中使用频率较高的一种顺序容器。实际上是一个可以动态扩展内存的数组。 2. 容器特性 &#xff08;1&#xff09;顺序序列 顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。 &#xff08;2&#xff09;动态数组 …

「HarmonyOS」下拉刷新组件使用详情

前言&#xff1a;在客户端开发过程中&#xff0c;经常会出现下拉刷新的功能&#xff0c;用于重新加载数据和加载更多数据&#xff0c;通过查找相关资料&#xff0c;查找到一个refresh下拉刷新的第三方库&#xff0c;今天主要介绍一下其中比较常用的RefreshLayout形式下拉刷新使…

【设计模式】Java 设计模式之代理模式(Proxy Pattern)

代理模式深入分析 一、概述 代理模式是一种为其他对象提供一种代理以控制对这个对象的访问的设计模式。在某些情况下&#xff0c;一个对象不适合或者不能直接访问另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式的主要目的是&#xf…

【gpt实践】50个提升工作效率的GPT指令

收集整理了50个工作不同场景中可能会用到的gpt指令&#xff0c;希望对大家有帮助。 1. 用「532规则」定制月度宣传规划 提示&#xff1a;“对于我的 [产品/服务] 在 [社交媒体平台上 ]定位 [我的目标受众]”&#xff0c;使用 5-3-2 规则制定 1 个月的社交媒体内容计划。” Pro…

关于I2C(Inter-Integrated Circuit)死锁及解决措施

I2C&#xff08;Inter-Integrated Circuit&#xff09;死锁是指两个或多个设备&#xff08;比如主设备和从设备&#xff09;在通信过程中&#xff0c;由于某种原因互相等待&#xff0c;导致无法正常进行通信的现象。这种死锁状态可能会导致整个系统的通信受阻&#xff0c;影响设…

K8S日志收集方案-EFK部署

EFK架构工作流程 部署说明 ECK (Elastic Cloud on Kubernetes)&#xff1a;2.7 Kubernetes&#xff1a;1.23.0 文件准备 crds.yaml 下载地址&#xff1a;https://download.elastic.co/downloads/eck/2.7.0/crds.yaml operator.yaml 下载地址&#xff1a;https://download.e…

性能出众的一区新算法|星鸦优化算法NOA原理及代码实现(Matlab)

文章来源于我的个人公众号&#xff1a;KAU的云实验台&#xff0c;主要更新智能优化算法的原理、应用、改进 CEC2005中的测试 本文KAU将介绍一个2023年发表在1区期刊KBS上的优化算法——星鸦优化算法(Nutcracker Optimization Algorithm&#xff0c;NOA)[1] 该算法由Mohamed …

一直被模仿,从未被超越

德国威步以及卓越的创新能力&#xff0c;成为业内不断被模仿的对象。德国威步自1989年创立35年以来&#xff0c;一直坚定地在软件保护及授权管理领域努力耕耘并不断创新和改进&#xff0c;拥抱互联网及软件开发技术的革新&#xff0c;完美融入并发展&#xff0c;虽然被其他竞争…

Github 2024-03-15 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-15统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3Python项目3非开发语言项目2PHP项目1C#项目1Rust项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:476…

通过Rothko罗斯科绘画学习CSS盒子

本文章属于学习笔记&#xff0c;在https://www.freecodecamp.org/chinese/learn/2022/responsive-web-design/中练习 1、使用 padding 简写属性来增加两个元素之间的空间到。 .canvas {} .frame { padding:50px; }2、overflow 设置为 hidden - 将画布更改回其原始尺寸。overfl…

第十四届“中关村青联杯”全国研究生数学建模竞赛-A题:无人机在抢险救灾中的优化运用(续)

目录 6 问题三模型建立与求解 6.1 问题描述与分析 6.2 模型建立 6.3 模型求解

Discourse 分类图片

我们可以在 Discourse 上为分类添加图片。 进入分类编辑界面&#xff0c;然后选择 Image 标签。 在 Images 标签下&#xff0c;上传分类需要的图片。 图片大小 图片的大小是 Discourse 进行控制的&#xff0c;高度为 150 PX 像素。 如果上传的图片大于 150 px 的高度像素&…

C++ 虚函数与多态

定义宠物类 Pet &#xff0c;包含虚函数 speak &#xff0c;显示 " miao ! miao !"和" wang ! wang !"。 信息" How does a pet speak ?"; 主团数中定义 Pet 、 Cat 和 Dog 的对象&#xff0c;再定义 Pet 指针量 &#xff0c;分别指向 Pet Cat…

人工智能在未来的优势

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一种模拟人类智能的技术&#xff0c;已经在现代科技中得到广泛应用&#xff0c;并且具有广阔的发展前景12。以下是人工智能在现代科技中的应用和未来发展趋势的介绍&#xff1a; 综上所述&#xff0c;…

零基础入门多媒体音频(2)-音频焦点2

说实话&#xff0c;android的代码是越来越难以阅读。业务函数里面狗皮膏药似的补丁与日俱增。继上篇简要介绍音频焦点的文章&#xff0c;这篇文章的主要内容是分析audiofocus的实现。看了一下午的相关代码都没找到做audiofocus策略的核心逻辑。目前能看懂的大概包含下面两个逻辑…

开源堡垒机Jumpserver安装教程

前言:堡垒机的应用场景 公司内有若干台服务器,既有windows的也有linux的, 提供有ERP,OA,Web,报表等等各种服务,往往需要远程登录到服务器上去做运维,但如果给root或者administrator权限,很容易出现不知道谁操作了的问题.如果不同人设置不同账号,又账号过多,权限不足等等其他问题…

高质量 Git 仓库汇总(持续更新,方便查看)

Leetcode https://github.com/kamyu104/LeetCode-Solutions Cmake https://github.com/viva64/pvs-studio-cmake-examples 3D目标检测 Awesome-3D-Object-Detection Awesome-3D-Object-Detection-for-Autonomous-Driving Cuda Code dbscan https://github.com/l3lackc…

外包就干了2个月,技术退步明显....

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

【计算机视觉】二、图像形成:2、几何基元和几何变换:2D变换

文章目录 一、向量和矩阵的基本运算二、几何基元和变换1、几何基元(Geometric Primitives)2、几何变换(Geometric Transformations)1. 各种变换的关系2. 变换公式3. 2D变换的层次4. python实现 一、向量和矩阵的基本运算 【计算机视觉】二、图像形成&#xff1a;1、向量和矩阵…