基于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,一经查实,立即删除!

相关文章

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%" …

中国元宇宙白皮书

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

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

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

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

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

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

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

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;这简直让…

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

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

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

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

64个数据分析常用术语

导读&#xff1a;本篇文章&#xff0c;我们来讲讲数据分析常用语。 内容综合整理自网络 01 绝对数和相对数 绝对数&#xff1a;是反应客观现象总体在一定时间、一定地点下的总规模、总水平的综合性指标&#xff0c;也是数据分析中常用的指标。比如年GDP&#xff0c;总人口等等。…

redis 的bitmap 开源包 bitmapist的应用

2019独角兽企业重金招聘Python工程师标准>>> 原理&#xff1a;http://my.oschina.net/u/1458120/blog/545224 bitmap包&#xff1a;https://github.com/Doist/bitmapist 要求redis> 2.6.0 bitmapist-master.zip 安装自己下载解压 python setup.py install &…

Django Views(视图函数)

http请求中产生两个核心对象&#xff1a; http请求&#xff1a;HttpRequest对象 http响应&#xff1a;HttpResponse对象 所在位置&#xff1a;django.http 之前我们用到的参数request就是HttpRequest 检测方法&#xff1a;isinstance(request,HttpRequest) 1 HttpRequest对象…

massCode 一款优秀的开源代码片段管理器

本文将介绍一款适合程序员使用的个人代码片段管理工具 massCode[1]。massCode小时候&#xff0c;也许我们每个人都会被老师要求有一个到处摘录优美句子段落的作文素材本 —— 采蜜集。不可否认&#xff0c;这对我们的写作水平的提高确实有很大的帮助。对开发人员来说当然也需要…

【ArcGIS Pro微课1000例】0021:Win10系统ArcGIS Pro3.0.1安装教程(附ArcGIS Pro下载)

本文讲解Win10系统上ArcGIS Pro3.0.1安装教程,附软件包下载。 文章目录 一、 软件安装步骤1. 安装.net Runtime 62. 安装ArcGIS Pro3. 安装中文语言4. 删除代理二、软件下载地址一、 软件安装步骤 [软件名称]: ArcGIS Pro 3.0.1 [软件大小]:4.33GB [安装环境]: Win 11/Win …

iOS逆向工程——非越狱调试

其实iOS的逆向分析业界已经十分成熟了&#xff0c;网上也有许多有趣的尝试(一步一步实现iOS微信自动抢红包(非越狱)。本文着重于如何在非越狱机器上进行调试&#xff0c;出于学习及总结的目的&#xff0c;记录于此。 本文以破解游戏梦幻西游为例&#xff0c;逐步讲解整个调试流…

[转]2022 Flutter 宣布发布 Windows 正式版

原文链接&#xff1a; https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed 自从推出 Flutter 以来&#xff0c;我们一直专注于为漂亮的定制应用提供跨平台解决方案&#xff0c;这些应用被编译为机器代码并充分利用设备的底层图形硬件功能。 今天这一愿景…

电脑经常弹出“不支持的硬件”解决办法

电脑经常弹出“不支持的硬件”解决办法。 通过微软官方查证,这是由于以上处理器需要最新的Windows10系统才会这样子的,而大多出现该提示的都安装了Win7或是Win8.1系统。 来至微软官方的说明 此错误出现的原因是各代新处理器要求最新Windows版本以获得支持。 例如,Windows 1…

使用 Web API 上传和下载多个文件

原文作者&#xff1a;Jay Krishna Reddy原文链接&#xff1a;https://www.c-sharpcorner.com/article/upload-and-download-multiple-files-using-web-api/翻译&#xff1a;沙漠尽头的狼&#xff08;谷歌翻译加持&#xff0c;文中版本使用.NET 6升级&#xff09;---正文开始---…

【MapGIS精品教程】002:GDB本地数据库的使用

本文主要内容为MapGISGDB本地数据库的使用&#xff0c;包括&#xff1a;GDB企业管理器的认识、GDB本地数据库的创建方法、GDB本地数据库的备份和恢复。 1. GDB企业管理器的认识 GDB是地理数据的资源管理器&#xff0c;主要对空间数据进行有序组织与管理。 GDB数据管理包括&…