基于Kubernetes v1.24.0的集群搭建(三)

1 使用kubeadm部署Kubernetes

如无特殊说明,以下操作可以在所有节点上进行。

1.1 首先我们需要配置一下阿里源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3d962f7c9f7f1c07fcb3546953bdb3c6.png

1.2 开始安装

执行以下命令开始安装,可以默认安装也可以指定版本安装,目前的最新版本是1.24.1,默认即安装此版本。

yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 --disableexcludes=kubernetes
或
yum install kubelet kubeadm kubectl
248428086924e12a69fcb1ff06434d06.png

1.3 安装后查看版本

kubeadm version
1565d861fc5afcfaa1d6434f890fb251.png

1.4 设置kubelet开机启动

systemctl enable --now kubelet
357955d6b0dd9904301ee55e8424be72.png

1.5 初始化kubeadm配置信息

kubeadm config print init-defaults >kubeadm-init.yaml
f4e76c2892815523eaf619d64445f33a.png

如上图所示,可以看出image仓库位置在k8s.gcr.io,为了防止拉取报错,可以配置成阿里云地址,定制出的config内容主要做了如下修改:

  • imageRepository为阿里云的registry

  • 设置kubelet的cgroupDriver为systemd

  • 设置kube-proxy代理模式为ipvs

apiVersion: kubeadm.k8s.io/v1beta3
mode: ipvs                                            # kube-proxy 模式
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
cgroupDriver: systemd                   # 配置 cgroup driver
localAPIEndpoint:advertiseAddress: 192.168.183.133 # ip地址bindPort: 6443
nodeRegistration:criSocket: unix:///var/run/containerd/containerd.sockimagePullPolicy: IfNotPresentname: nodeataints: null
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers # 阿里源
kind: ClusterConfiguration
kubernetesVersion: 1.24.1
networking:dnsDomain: cluster.localserviceSubnet: 10.1.0.0/12podSubnet: 10.88.0.0/16                  # ip网段
scheduler: {}
750b3a24b53aa6a535983ff9eaddbe64.png

详细的配置说明可以参考该文档:https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/

1.6 拉取依赖镜像

在开始初始化集群之前,可以预先在各个服务器节点上拉取所k8s需要的如下容器镜像:

  • kube-apiserver:v1.24.0

  • kube-controller-manager:v1.24.0

  • kube-scheduler:v1.24.0

  • kube-proxy:v1.24.0

  • pause:3.7

  • etcd:3.5.3-0

  • coredns:v1.8.6

kubeadm config images pull --config kubeadm-init.yaml
9f5a85ccc76c03a97fb78dd8103ac029.png

2 Master节点操作

2.1 集群初始化

kubeadm init --config kubeadm-init.yaml

初始化过程中,可能会遇到“/proc/sys/net/bridge/bridge-nf-call-iptables does not exist”的错误,这是因为之前配置的br_netfilter没有启动,运行一下这个命令即可

modprobe br_netfilter

如果一切正常,则会遇到如下提示,

326d9ccf8c8c58c319db66dc03c020e5.png

以及最重要的token

2fc93d08af2f919bda4d77898a9d6969.png

2.2 配置常规用户使用kubectl访问集群

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

2.3 保存配置文件

kubectl -n kube-system get cm kubeadm-config -o yaml
eeaa0df8cb1fce1bfe5049a6f78fadb8.png

2.4 查看节点状态

kubectl get node
cf51efb0f7ec7ddf19edca48727e8567.png

3 Node节点操作

3.1  加入集群

kubeadm join 192.168.183.133:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:9ec147b59acdd7ac4f6d3b7b5bf378cf46535aa77117878d49e926a638eaf307

出现如下信息,则说明Node节点已经成功加入到集群

74faba3b82157dc569387d066b3beda6.png

执行如下命令,发现网络报错

kubectl get nodes
9d7a49076a76cb89287bd68505bf95f1.png

出现如上错误,我是把master节点上的admin.conf同步到两个node节点里,不知道大家是如何解决这个问题的。在master节点做如下操作

scp /etc/kubernetes/admin.conf node02:/etc/kubernetes/
scp /etc/kubernetes/admin.conf node02:/etc/kubernetes/
d61e2c9b866af786bd76bf2a7c786d4c.png

在两个节点上同时执行如下命令:

mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config
17166035094eafcc5244beeda0947c99.png

3.2 安装网络插件

我们有两种选择,一个是Flannel,另一个是Calico

由CoreOS开发的项目Flannel,可能是最直接和最受欢迎的CNI插件。它是容器编排系统中最成熟的网络结构示例之一,旨在实现更好的容器间和主机间网络。许多常见的Kubernetes集群部署工具和许多Kubernetes发行版都可以默认安装Flannel。

Calico是Kubernetes生态系统中另一种流行的网络选择。虽然Flannel被公认为是最简单的选择,但Calico以其性能、灵活性而闻名。Calico的功能更为全面,不仅提供主机和pod之间的网络连接,还涉及网络安全和管理。Calico CNI插件在CNI框架内封装了Calico的功能。

此处我们使用Flannel插件。

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

下载后需要修改里面的配置,首先设置一下网卡

9a3992521e3b271de094eff799e9545d.png
  • 其次需要设置一下网段,这里的网段和 1.5 步骤中的podSubnet的值保持一直,都是

  • 10.88.0.0/16

f5671c2b2b604184a739b8f96e3e4192.png

执行命令

kubectl apply -f kube-flannel.yml
a4edf292c97ebcbb89af748e738f5943.png

做出了如上操作之后还不行,还是会报错,主要是CNI版本兼容性问题,这里可以把containerd中的CNI去除掉

mv /etc/cni/net.d/10-containerd-net.conflist /etc/cni/net.d/10-containerd-net.conflist.bak
systemctl daemon-reload
systemctl restart containerd kubelet
a29462f647967b9b57239926f6b3cee7.png
fce910b0904aa113b526b4ff83a031f7.png

3.3 集群验证

kubectl get cs
kubectl get nodes
5cf7cbe0b153c908a45e95c3ca56f11d.png

再执行一下如下命令,查看是否所有的pod都是运行正常的:

kubectl get pod --all-namespaces -o wide
7c269c5aee6f9ba65be5c4bdefeedddb.png

3.4 验证DNS解析

  • 创建busybox.yaml

apiVersion: v1
kind: Pod
metadata:name: busyboxnamespace: default
spec:containers:- name: busyboximage: busyboxcommand:- sleep- "3600"imagePullPolicy: IfNotPresentrestartPolicy: Always
kubectl create -f busybox.yaml
ad57f59a2d1ba647f2c2ee92a6d66921.png
  • 验证一下状态

kubectl get pods busybox
1d8c530e647b201673ed600476c461da.png
  • DNS检查

kubectl exec -i -t busybox -- nslookup kubernetes.default
3f7252b8d231b8a3908f9c86f9cea0cb.png
  • 排错 根据这篇文章(https://dockone.io/article/10399)的排查,我也检查了一下我的CentOS内核版本,是3.10,比较老,需要升级一下。

da4e53b6882366f8272888e3d263c5cc.png

经过一系列排错后,再次执行如下命令:

kubectl exec -i -t busybox -- nslookup kubernetes.default
[root@master ~]# kubectl exec -ti busybox -- nslookup kubernetes
Server:         10.1.0.10
Address:        10.1.0.10#53
Name:   kubernetes.default.svc.cluster.local
Address: 10.1.0.1

目前的操作只是练手而已,想要搭建高可用的集群任重道远,需要投入更多精力。

参考链接

http://www.manongjc.com/detail/25-lioggelnywerjyf.html https://www.kubernetes.org.cn/1904.html https://www.toutiao.com/article/7105957860210819623/ https://i4t.com/5451.html https://blog.frognew.com/2022/05/kubeadm-install-kubernetes-1.24.html

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

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

相关文章

C++获取本机的ip地址程序

C获取本机的ip地址程序 #include <WinSock2.h> #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库class CInitSock { public:CInitSock(BYTE minorVer 2,BYTE majorVer 2){WSADATA wsaData;WORD VersionRequset;VersionRequset MAKEWORD(mino…

BAT批处理代码快速打开注册表并定位到指定目录

主要代码&#xff1a; echo off echo %1 copy %~nx0 c:\windows\system32 if "%1" NEQ "" (set regPath%1) else (set /p regPath输入打开的注册表路径:) :trimRight if "%regPath:~-1%""\" set "regPath%regPath:~0,-1%" …

Elasticsearch的Groovy Script自定义评分检索

需求&#xff1a;以索引中的boostapp列作为评分的基础分值&#xff0c;同时根据carpublishtime&#xff08;数据的刷新时间字段&#xff09;按时间进行衰减。 基于Groovy脚本实现。 1、query脚本方式&#xff1a; {"fields": ["boost","ucarid",…

stm32串口通讯问题

stm32串口通讯问题 在串口试验中&#xff0c;串口通讯不正常&#xff0c;则可能会出现以下问题&#xff1a; 1. 配置完成后&#xff0c;串口没有任何消息打印。 原因&#xff1a;1&#xff0c;端口配置有问题&#xff0c;需要重新检查I/O口的配置 2&#xff0c;接线有问题&…

中国元宇宙白皮书

PS&#xff1a;PDF目录&#xff08;书签&#xff09;是为便于阅读&#xff0c;重新整理过的。 2022《中国元宇宙白皮书》-互联网文档类资源-CSDN下载1月26日&#xff0c;2022《中国元宇宙白皮书》在北京中关村正式全网发布。该白皮书由国科创新研究院首席科学家更多下载资源、学…

【GlobalMapper精品教程】002:GlobalMapper中文版安装后的基本设置

本文讲述安装globalmapper后的一些简单基本设置&#xff08;持续更新&#xff09;&#xff0c;为后续深入学习软件打下基础。订阅专栏后私信作者&#xff0c;获取中文安装包及配套实验数据包。 文章目录1. 工具条的显示与关闭2. 面积单位设置3. 选择所选面要素的边框4. 二三维联…

SaltStack入门篇之远程执行和配置管理

一、SaltStack概述 Salt&#xff0c;,一种全新的基础设施管理方式&#xff0c;部署轻松&#xff0c;在几分钟内可运行起来&#xff0c;扩展性好&#xff0c;很容易管理上万台服务器&#xff0c;速度够快&#xff0c;服务器之间秒级通讯。 salt底层采用动态的连接总线, 使其可以…

ArgoCD 用户管理、RBAC 控制、脚本登录、App 同步

命令行登录参考&#xff1a;argocd 登录登出[1]登录&#xff1a;echo y | argocd login argocd-server.argocd.svc.cluster.local --password argoadmin.smallsoup --username admin登出&#xff1a;argocd logout argocd-server.argocd.svc.cluster.local创建用户、授权创建用…

敏捷需要重构吗?不需要吗?

在传统的Scrum中&#xff0c;Sprint的长度为一个月&#xff0c;现在一般时间更短。这意味着团队就得在项目刚开始的两周或者一个月内交付完成的软件。软件来自于产品负责人的backlog。它必须由特征组成。要正确的做到Scrum&#xff0c;我们不能做基础架构之类的东西&#xff0c…

【GlobalMapper精品教程】005:影像拼接与裁切(分幅)作业案例教程

本文讲述Globalmapper影像拼接与裁剪案例教程。 文章目录 一、影像的拼接(1)针对少量影像的拼接(2)针对大量影像的拼接二、影像的裁剪一、影像的拼接 (1)针对少量影像的拼接 如果影像数量比较小,可以通过加载→导出的方式进行拼接。 如下图所示,案例数据(配套实验数…

元宇宙行业深度研究报告:为什么元宇宙是下一代互联网?

目录 1、什么是元宇宙&#xff1f;为什么元宇宙是下一代互联网 1.1、 元宇宙&#xff1a;下一代沉浸式互联网 1.1.1、超越虚拟与现实的科幻畅想&#xff1a;元宇宙概念来源 1.1.2、新技术由点突破连接成面&#xff0c;移动互联网继承者的孕育 1.1.3、元宇宙的五大要素&…

细节总结(一)

self.XXX与_XXX的区别 通过self.XXX得到的数据相当于调用get函数取值,等价于[self XXX];而通过_XXX获取的是自己的实例变量,直接对变量进行操作,并未调用get函数。所以,通过懒加载方式初始化的变量只能通过self.XXX调用,否则可能会存在未初始化的问题。self.xxx是对属性的访问;…

redis 安装错误 jemalloc.h: No such file or directory

为什么80%的码农都做不了架构师&#xff1f;>>> 错误描述 [rootmysql-rtb-slave redis-4.0.1]# make && make install cd src && make all make[1]: Entering directory /usr/local/src/redis-4.0.1/srcCC Makefile.dep make[1]: Leaving director…

OAuth,JWT ,OIDC你们搞得我好乱啊

hi&#xff0c;这里是桑小榆&#xff0c;这次分享的不是生活文&#xff0c;而是技术文。基于OAuth2.0协议的授权认证&#xff0c;初次接触授权认证知识的时候&#xff0c;出现了不少热门名词&#xff0c;“OAuth”&#xff0c;“JWT”&#xff0c;“OIDC”&#xff0c;这简直让…

MyEclipse快捷键大全

存盘 Ctrls(肯定知道) 注释代码 Ctrl/ 取消注释 Ctrl\(Eclipse3已经都合并到Ctrl/了) 代码辅助 Alt/ 快速修复 Ctrl1 代码格式化 CtrlShiftf 整理导入 CtrlShifto 切换窗口 Ctrlf6 <可改为ctrltab方便> ctrlshiftM 导入未引用的包 ctrlw 关闭单个窗口 F3 跳转到类、变量的…

软件测试技术第二次作业——程序错误的判断

在做作业之前我们首先要明确软件测试过程中的几个名词&#xff1a; Fault&#xff1a;在软件测试中&#xff0c;fault是指程序中静态的缺陷&#xff0c;也就是指在程序中存在的编程错误。 Error&#xff1a;在软件测试中&#xff0c;error是指由于程序中存在的fault而产生的不正…

【GlobalMapper精品教程】006:Excel等表格(.xls)或文本(.txt .csv)坐标文件生成矢量点

【拓展阅读】: 【QGIS入门实战精品教程】4.5:QGIS打开Excel中的点坐标,并生成矢量文件 【ArcGIS微课1000例】0022:ArcGIS点(点坐标)自动连成线操作案例教程 【ArcGIS风暴】ArcGIS 10.2导入Excel数据X、Y坐标(经纬度、平面坐标),生成Shapefile点数据图层 【ArcGIS风暴】…

Java编程思想 学习笔记1

一、对象导论 1.抽象过程   Alan Kay曾经总结了第一个成功的面向对象语言、同时也是Java所基于的语言之一的Smalltalk的五个基本特性&#xff0c;这些特性表现了纯粹的面向对象程序设计方式   1&#xff09;万物皆对象。   2&#xff09;程序是对象的集合&#xff0c;它们…

不只是日志收集,项目监控工具Sentry的安装、配置、使用

前言上一篇文章介绍了ExceptionLess这个日志收集系统&#xff1a;ExceptionLess的安装、配置、使用由于ExceptionLess官方提供的客户端只有.Net/.NetCore平台和js的&#xff0c;本文继续介绍另一个日志收集系统&#xff1a;SentrySentry 是一个实时事件日志记录和聚合平台。&am…