一.安装k8s环境

1.初始操作

默认3台服务器都执行

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久# 关闭完swap后,一定要重启一下虚拟机!!!
# 根据规划设置主机名
hostnamectl set-hostname <hostname># 在master添加hosts
cat >> /etc/hosts << EOF
192.168.124.4 k8s-master
192.168.124.5 k8s-node1
192.168.124.6 k8s-node2
EOF# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOFsysctl --system  # 生效# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

2.安装基础软件

基础软件需要在三台服务器都执行

2.1安装docker

 在这里,我们将向您介绍Docker的安装方法。但首先,我们需要先安装依赖包。您需要通过使用以下命令安装一些基本软件:

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

然后,您可以使用以下命令来安装Docker:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

当安装成功时,您可以执行以下命令来更新缓存并安装Docker Community版:

sudo yum update

sudo yum install docker-ce-20.10.5 docker-ce-cli-20.10.5 containerd.io

docker -v
输出  Docker version 20.10.5, build 55c4c88

 2.2添加阿里云 yum 源

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

2.3安装 kubeadm、kubelet、kubectl

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6systemctl enable kubelet# 配置关闭 Docker 的 cgroups,修改 /etc/docker/daemon.json,加入以下内容
"exec-opts": ["native.cgroupdriver=systemd"]# 重启 docker
systemctl daemon-reload
systemctl restart docker

3. 部署 Kubernetes Master

# 在 Master 节点下执行kubeadm init \--apiserver-advertise-address=192.168.124.4 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.23.6 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16# 安装成功后,复制如下配置并执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes

4.加入 Kubernetes Node

分别在 k8s-node1 和 k8s-node2 执行# 下方命令可以在 k8s master 控制台初始化成功后复制 join 命令
#下面的命令是第3步生成的命令kubeadm join 192.168.124.4:6443 --token w34ha2.66if2c8nwmeat9o7 --discovery-token-ca-cert-hash sha256:20e2227554f8883811c01edd850f0cf2f396589d32b57b9984de3353a7389477# 如果初始化的 token 不小心清空了,可以通过如下命令获取或者重新申请
# 如果 token 已经过期,就重新申请
kubeadm token create# token 没有过期可以通过如下命令获取
kubeadm token list# 获取 --discovery-token-ca-cert-hash 值,得到值后需要在前面拼接上 sha256:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'

查看node情况,发现都是Notready。是因为网络原因。执行第5步即可。

[root@k8s-master k8s]# kubectl get node
NAME         STATUS     ROLES                  AGE   VERSION
k8s-master   NotReady   control-plane,master   22h   v1.23.6
k8s-node01   NotReady   <none>                 22h   v1.23.6
k8s-node02   Ready      <none>                 22h   v1.23.6

5. 部署 CNI 网络插件

# 在 master 节点上执行
# 下载 calico 配置文件,可能会网络超时
curl https://docs.projectcalico.org/manifests/calico.yaml -O# 修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改为与初始化的 cidr 相同# 修改 IP_AUTODETECTION_METHOD 下的网卡名称# 删除镜像 docker.io/ 前缀,避免下载过慢导致失败
sed -i 's#docker.io/##g' calico.yaml

 

#执行
kubectl apply -f calico.yaml[root@k8s-master k8s]# kubectl get pod -n kube-system -o wide
NAME                                       READY   STATUS                  RESTARTS      AGE     IP              NODE         NOMINATED NODE   READINESS GATES
calico-kube-controllers-74dbdc644f-l95jc   0/1     ContainerCreating       0             2m37s   <none>          k8s-node02   <none>           <none>
calico-node-82kwk                          0/1     Init:2/3                0             2m37s   192.168.124.5   k8s-node01   <none>           <none>
calico-node-pcbtl                          0/1     Init:ImagePullBackOff   0             2m37s   192.168.124.4   k8s-master   <none>           <none>
calico-node-v96st                          0/1     Init:2/3                0             2m37s   192.168.124.6   k8s-node02   <none>           <none>
coredns-6d8c4cb4d-jqktl                    0/1     ContainerCreating       0             22h     <none>          k8s-node02   <none>           <none>
coredns-6d8c4cb4d-rhgsv                    0/1     ContainerCreating       0             22h     <none>          k8s-node02   <none>           <none>
etcd-k8s-master                            1/1     Running                 1 (22h ago)   22h     192.168.124.4   k8s-master   <none>           <none>
kube-apiserver-k8s-master                  1/1     Running                 1 (22h ago)   22h     192.168.124.4   k8s-master   <none>           <none>
kube-controller-manager-k8s-master         1/1     Running                 1 (22h ago)   22h     192.168.124.4   k8s-master   <none>           <none>
kube-proxy-2k2n6                           1/1     Running                 1 (22h ago)   22h     192.168.124.6   k8s-node02   <none>           <none>
kube-proxy-2kv9q                           1/1     Running                 1 (22h ago)   22h     192.168.124.5   k8s-node01   <none>           <none>
kube-proxy-hpjw6                           1/1     Running                 1 (22h ago)   22h     192.168.124.4   k8s-master   <none>           <none>
kube-scheduler-k8s-master                  1/1     Running                 1 (22h ago)   22h     192.168.124.4   k8s-master   <none>           <none>#查看报错的pod
[root@k8s-master k8s]# kubectl describe po calico-node-pcbtl -n kube-system
Name:                 calico-node-pcbtl
Namespace:            kube-system...................省略了信息Warning  Failed     5m58s                  kubelet            Error: ErrImagePullNormal   BackOff    5m57s                  kubelet            Back-off pulling image "calico/cni:v3.26.1"Warning  Failed     5m57s                  kubelet            Error: ImagePullBackOffNormal   Pulling    5m43s (x2 over 6m53s)  kubelet            Pulling image "calico/cni:v3.26.1"

第5步非常慢,请耐心等待。可以使用docker pull  下载下面的镜像。

执行完之后,再查看node信息

[root@k8s-master k8s]# kubectl get pod -n kube-system 
NAME                                       READY   STATUS    RESTARTS      AGE
calico-kube-controllers-74dbdc644f-l95jc   1/1     Running   0             109m
calico-node-82kwk                          1/1     Running   0             109m
calico-node-ps5f8                          1/1     Running   0             60m
calico-node-v96st                          1/1     Running   0             109m
coredns-6d8c4cb4d-jqktl                    1/1     Running   0             24h
coredns-6d8c4cb4d-rhgsv                    1/1     Running   0             24h
etcd-k8s-master                            1/1     Running   1 (23h ago)   24h
kube-apiserver-k8s-master                  1/1     Running   1 (23h ago)   24h
kube-controller-manager-k8s-master         1/1     Running   1 (23h ago)   24h
kube-proxy-2k2n6                           1/1     Running   1 (23h ago)   24h
kube-proxy-2kv9q                           1/1     Running   1 (23h ago)   24h
kube-proxy-hpjw6                           1/1     Running   1 (23h ago)   24h
kube-scheduler-k8s-master                  1/1     Running   1 (23h ago)   24h
[root@k8s-master k8s]# kubectl get node
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   24h   v1.23.6
k8s-node01   Ready    <none>                 24h   v1.23.6
k8s-node02   Ready    <none>                 24h   v1.23.6

6. 测试 kubernete

[root@k8s-master k8s]# kubectl create deployment nginx-test --image=nginx
deployment.apps/nginx-test created
[root@k8s-master k8s]# kubectl get pod
NAME                          READY   STATUS    RESTARTS   AGE
nginx-85b98978db-lgzwl        1/1     Running   0          116s
nginx-test-84b478f9c5-sl8rg   1/1     Running   0          15s
# 暴露端口
[root@k8s-master k8s]# kubectl expose deployment nginx-test --port=80 --type=NodePort
service/nginx-test exposed# 查看 pod 以及服务信息
[root@k8s-master k8s]# kubectl get pod,svc
NAME                              READY   STATUS    RESTARTS   AGE
pod/nginx-85b98978db-lgzwl        1/1     Running   0          2m27s
pod/nginx-test-84b478f9c5-sl8rg   1/1     Running   0          46sNAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        24h
service/nginx        NodePort    10.106.211.191   <none>        80:30662/TCP   86m
service/nginx-test   NodePort    10.103.164.185   <none>        80:30393/TCP   15s
[root@k8s-master k8s]# 

 

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

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

相关文章

QT--day3(定时器事件、对话框)

头文件代码&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器事件处理时间头文件 #include <QTime> //时间类 #include <QtTextToSpeech> #include <QPushButton> #include <QLabel&g…

【数据结构】实验六:队列

实验六 队列 一、实验目的与要求 1&#xff09;熟悉C/C语言&#xff08;或其他编程语言&#xff09;的集成开发环境&#xff1b; 2&#xff09;通过本实验加深对队列的理解&#xff0c;熟悉基本操作&#xff1b; 3&#xff09; 结合具体的问题分析算法时间复杂度。 二、…

ubuntu23.04 flush DNS caches

如何在Ubuntu 23.04中刷新DNS缓存 现在&#xff0c;如果你运行的是Ubuntu 23.04&#xff0c;"系统解决 "的方法将不再适用于你。让我们检查一下你目前的缓存大小。打开你的Ubuntu终端&#xff0c;运行以下command&#xff1a; resolvectl statistics现在&#xff0c…

mysql主从同步怎么跳过错误

今天介绍两种mysql主从同步跳过错误的方法&#xff1a; 一、两种方法介绍 1、跳过指定数量的事务&#xff1a; mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER 1 #跳过一个事务 mysql>slave start2、修改mysql的配置文件&#xff0c;通过slav…

【QT 网络云盘客户端】——实现文件属性窗口

目录 文件属性对话框 设置字体样式 获取文件的信息 显示文件属性对话框 当我们点击文件中的属性&#xff0c;则会弹出一个属性对话框&#xff1a; 实现过程&#xff1a; 0.设置 属性 菜单项的槽函数。 1.鼠获取鼠标选中的QListWidgetItem,它包含 图标和文件名 2.根据文件…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 数据压缩和打包处理与数据更新

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

十一、数据结构——树(Tree)的基本概念

数据结构之树(Tree) 目录 树的基本概念树的分类树的基本操作树的应用结语 树的基本概念 树是一种重要的数据结构&#xff0c;它在计算机科学中被广泛应用。树的特点是以分层的方式存储数据&#xff0c;具有层次结构&#xff0c;类似于现实生活中的树状结构。在树中&#xff…

python与深度学习(十):CNN和cifar10二

目录 1. 说明2. cifar10的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试。首…

JPA之Hibernate

JPA 定义&#xff1a;是 JavaEE 中一组用于持久化数据的 API&#xff0c;它提供了一种标准的 ORM 规范&#xff0c;用于 Java 对象映射到数据库中。 JPA 的开发是为了简化企业级应用程序的开发&#xff0c;降低应用程序与数据库之间的耦合度&#xff0c;并提高应用程序的可维护…

【Vuvuzela 声音去噪算法】基于流行的频谱减法技术的声音去噪算法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

WEB:unseping

背景知识 php序列化和反序列化 命令执行绕过方式 题目 进行代码审计 可知为反序列化 整体是创建case类&#xff0c;可接受post传来的ctf值 _consturuct函数,是在函数调动前启用&#xff0c;构造了$method和$args两个变量。 _dexstruct函数在变量摧毁的时使用&#xff0c;所…

【嵌入式学习笔记】嵌入式基础10——STM32时钟配置

1.认识时钟树 简单来说&#xff0c;时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波 1.1.F1的时钟树 1.2.F4的时钟树(407为例) 1.3.F7的时钟树 1.4.H7的时钟树 2.配置系统时钟(F1为例) 2.1.系统时钟配置步骤 配置HSE VALUE&#xff1a;告诉HAL库外部晶振…

2021 年高教社杯全国大学生数学建模竞赛 E 题 中药材的鉴别 第一题

目录 1.数据预处理 1.1 数据基本信息探索 1.2 数据可视化 1.3 异常值处理 2. 数据特征值提取 2.1 数据标准化 2.2 PCA提取特征值 3. 数据聚类鉴别药材种类 3.1 肘部图确定K值 3.2 轮廓系数图确定K值 3.3 数据聚类 3.4 聚类结果可视化 4. 研究不同种类药材…

vue-element-plus-admin框架的tag上下文切换bug

问题 首先贴上该框架的链接&#xff1a;https://github.com/kailong321200875/vue-element-plus-admin 在对路由进行部分修改后&#xff0c;网站多次切换tag时&#xff0c;控制台会出现报错&#xff1a;Cannot read properties of undefined (reading offsetLeft)。 我在框架…

SQL基础培训24-存储过程详解

1.存储过程的概念与语法 1.1.概念 存储过程(Stored Procedure):已预编译为一个可执行过程的一个或多个SQL语句的集合。 1.2.语法 创建测试表: create table student <

jdk11环境 提示“因为 accessExternalDTD 属性设置的限制导致不允许 ‘http‘ 访问“bug

在运行mybatis源码的时候&#xff0c;提示一下错误&#xff1a; Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### Cause: org.apache.ibatis.builder.BuilderException: Error creating docum…

CentOS下 Docker、Docker Compose 的安装教程

Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。 Docker Compose是用于定义…

C语言基础入门详解一

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 初识C语言 //#include 相当于java的import,stdio全称&#xff1a;st…

PostMan+Jmeter+QTP工具介绍及安装

目录 一、PostMan介绍​编辑 二、下载安装 三、Postman与Jmeter的区别 一、开发语言区别&#xff1a; 二、使用范围区别&#xff1a; 三、使用区别&#xff1a; 四、Jmeter安装 附一个详细的Jmeter按照新手使用教程&#xff0c;感谢作者&#xff0c;亲测有效。 五、Jme…

微信读书:长期投资(阅读摘录)

微信读书&#xff1a;长期投资&#xff08;阅读摘录&#xff09; 所有投资高手的时间精力都投向了这三大块&#xff1a;行动、思考、读书。 我们把耐心发挥到了极致&#xff0c;这正是价值投资的关键特征之一。 通常在牛市中想要跑赢大盘&#xff0c;难度非常大。 实际上&am…