Ubuntu22.04部署K8S1.27.2版本集群

news2024/11/29 3:57:33

一、设置主机名并在 hosts 文件中添加条目

1、登录节点使用 hostnamectl 命令设置 hostname

#在master中:      172.18.10.11

$ sudo hostnamectl set-hostname "k8s-master"

#在work1节点中:  172.18.10.12

$ sudo hostnamectl set-hostname "k8s-worker1"

#在work2节点中:  172.18.10.13

$ sudo hostnamectl set-hostname "k8s-worker2"

$ exec bash

 2、在每个节点上的 /etc/hosts 文件中添加以下内容

sudo vi /etc/hosts

172.18.10.11   k8s-master

172.18.10.12   k8s-worker1

172.18.10.13   k8s-worker2

 二、 禁用 swap & 添加内核设置

1、在所有节点上,执行下面的 swapoff 和sed命令禁用交换功能

$ sudo vi /etc/fstab

#关闭后记得重启虚拟机

2、在所有节点上加载以下内核模块

$ sudo tee /etc/modules-load.d/containerd.conf <<EOF

overlay

br_netfilter

EOF

$ sudo modprobe overlay

$ sudo modprobe br_netfilter

3、为 Kubernetes 设置以下内核参数,运行如下的tee命令

$ sudo tee /etc/sysctl.d/kubernetes.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

#重新加载上述更改,运行

$ sudo sysctl --system

三、所有节点安装 containerd 容器运行时

1、安装容器运行时依赖项

$ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

启用 docker 存储库

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

$ sudo add-apt-repository "deb [arch=amd64] Index of linux/ubuntu/ $(lsb_release -cs) stable"

3、安装 containerd

$ sudo apt update

$ sudo apt install -y containerd.io

 4、配置 containerd

使它使用 systemd 作为 cgroup

$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

$ sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

5、将镜像地址换为阿里云地址,否者在初始化时无法拉取到镜像

$ sudo sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml

6、重启并启用 containerd 服务

$ sudo systemctl daemon-reload

$ sudo systemctl restart containerd

$ sudo systemctl enable containerd

四、添加 Kubernetes apt 存储库

1、下载 Google Cloud 公开签名秘钥

$ sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

此操作需要看脸,若脸黑出现以下报错

curl: (28) Failed to connect to packages.cloud.google.com port 443 after 129625 ms: 连接超时

需手动下载https://packages.cloud.google.com/apt/doc/apt-key.gpg,将下载后的apt-key.gpg复制到/usr/share/keyrings/kubernetes-archive-keyring.gpg文件下:

$ sudo cp /home/lin/apt-key.gpg  /usr/share/keyrings/kubernetes-archive-keyring.gpg

2、添加 Kubernetes apt仓库

$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

五、安装Kubectl, kubeadm 和 kubelet

1、更新索引

$ sudo apt-get update

解决方法:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xxxxxx(缺少的公钥)

#公钥位置如上图标红,则命令应为

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B53DC80D13EDEF05

继续sudo apt-get update更新索引报一样错误

原因是该镜像官网地址是国外的,国内访问不了,需要换源

$ sudo echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

继续sudo apt-get update更新索引

 2、在所有节点上安装 kubectl,kubelet,Kubeadm并锁定其版本

$ sudo apt-get install -y kubelet kubeadm kubectl

$ sudo apt-mark hold kubelet kubeadm kubectl

worker节点报错

解决方法:

$ sudo echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

 $ sudo apt-get update报错

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B53DC80D13EDEF05

 继续$ sudo apt-get update更新索引

 $ sudo apt-get install -y kubelet kubeadm kubectl

$ sudo apt-mark hold kubelet kubeadm kubectl

 六、初始化 Kubernetes 集群

$ sudo vi /etc/containerd/config.toml

$ sudo systemctl daemon-reload

$ sudo systemctl restart containerd

$ sudo systemctl enable containerd

 1、在主节点上运行以下命令初始化

#–apiserver-advertise-address=172.18.10.11 为Master的IP

#–image-repository registry.aliyuncs.com/google_containers 指定镜像仓库,如果不指定默认是k8s.gcr.io

$ sudo kubeadm init \

--image-repository registry.aliyuncs.com/google_containers  \

--apiserver-advertise-address=172.18.10.11 \

--kubernetes-version v1.27.1 \

--pod-network-cidr=10.244.0.0/16 \

--v=5

 输出以下内容表示初始化成功,同时还得到了一组与集群交互的命令,以及工作节点加入集群的命令

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

#集群交互命令

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

Installing Addons | Kubernetes

Then you can join any number of worker nodes by running the following on each as root:

#工作节点加入集群的命令

kubeadm join k8s-master:6443 --token 04bkvu.6yc4clf05z009t1b

--discovery-token-ca-cert-hash sha256:088e804bb2658add7bfd6f6620beb0f6df5307c3371a7d623f8563b5ac30347d

注意:若在此之前对集群进行过初始化或加入节点操作,应通过kubeadm reset命令还原通过 ‘kubeadm init’ 或者 ‘kubeadm join’ 操作对主机所作的更改再重新进行初始化

kubeadm reset --cert-dir string

#--cert-dir string 存储证书的目录路径。如果已指定,则需要清空此目录。默认值:"/etc/kubernetes/pki";初始化集群过应加此参数

参数

作用

–cert-dir string

清空存储证书的目录路径

–cleanup-tmp-dir

清理 “/etc/kubernetes/tmp” 目录

–cri-socket string

要连接的 CRI 套接字的路径

–dry-run

不做任何更改

-f, --force

在不提示确认的情况下重置节点

–kubeconfig string

与集群通信时使用的 kubeconfig ,文件默认值:"/etc/kubernetes/admin.conf"

2、在主节点输入集群交互命令$ mkdir -p $HOME/.kube

$ mkdir -p $HOME/.kube

$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

 3、工作节点加入集群

在工作节点输入加入集群命令,在初始化成功输出内容中寻找

$ sudo kubeadm join k8s-master:6443 --token 04bkvu.6yc4clf05z009t1b \

--discovery-token-ca-cert-hash sha256:088e804bb2658add7bfd6f6620beb0f6df5307c3371a7d623f8563b5ac30347d

添加节点2成功加入输出以下内容

 在主节点查看节点状态

$ kubectl get nodes

 4、在主节点安装flannel网络插件(CNI)

$ curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

$ kubectl apply -f kube-flannel.yml

 部署好网络插件之后此时再次查看节点可以看到状态变成了ready

$ kubectl get pod -A

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

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

相关文章

“百亿生态”背后,拼多多的初心

哈佛商学院教授、“颠覆性创新”理论的提出者克莱顿克里斯坦森&#xff0c;在《繁荣悖论》中将创新分为三类&#xff1a;第一类是效率创新&#xff0c;即生产更便宜、更优质的产品&#xff1b;第二类是持续性创新&#xff0c;即不断对产品进行改进&#xff1b;第三类是市场创造…

cuda编程学习——卷积计算CUDA、Pytorch比较 干货向(六)

前言 参考资料&#xff1a; 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 CUDA编程&#xff1a;基础与实践 樊哲勇 参考B站&#xff1a;蒙特卡洛加的树 文章所有代码可在我的GitHub获得&#xff0c;后续会慢慢更新 文章、讲解视频同步更新公众《AI知识物语》&#…

勿踩,电商实时聊天常见错误

实时聊天现在在电商企业与SaaS行业已经是必备的服务&#xff0c;他的实施很简单&#xff1a;您找到适合您的工具&#xff0c;将其打开并将其放在所有客户都可以看到的地方。但是无休止的互动冲击&#xff0c;措辞不佳或沟通不畅的问题&#xff0c;客户的24/7期望&#xff0c;在…

【Apache网页与安全优化】

一.介绍 在企业中&#xff0c;部署Apache后只采用默认的配置参数&#xff0c;会引发网站很多问题&#xff0c;换言之默认配置是针对以前较低的服务器配置的&#xff0c;以前的配置已经不适用当今互联网时代。为了适应企业需求&#xff0c;就需要考虑如何提升Apache的性能与稳定…

Feign入门使用 OpenFeign 日志增强 超时控制

一、概述 Feign是一个声明式的web服务的客户端&#xff0c;Feign就是参考Ribbon添加了注解接口的绑定器。 我们封装一些客户端类来包装对其他服务的依赖调用。Feign让我们只需要创建一个接口注解就能够实现操作。Feign集成了Ribbon 关于使用就是在接口添加特定注解就可以了。…

html:叫你如何编写第一个网页

<!DOCTYPE html> <!--声明--> <html lang"en"> <head><meta charset"UTF-8"><title>我的第一个网页</title>体部分&#xff1a;存放的是组成html代码部分 </head><BODY><!--html:HyperText Mark…

【Linux网络服务】Apache配置与应用

Apache配置与应用 一、构建虚拟Web主机1.1httpd服务支持的虚拟主机类型包括以下三种 二、基于域名的虚拟主机三、基于IP地址的虚拟主机四、基于端口的虚拟机五、Apache连接保持六、构建Web虚拟目录与用户授权限制七、日志分割 一、构建虚拟Web主机 虚拟Web主机指的是在同一台服…

PointNet++ 源码解读

1.从main函数开始&#xff1a; 1.1 确定使用的哪个GPU. 1.2 保存训练时的参数和日志 2. 加载数据 先找到存放训练和测试数据的目录&#xff0c;接下来加载相关的数据参数&#xff1a; 下面是执行的结果&#xff1a; 接下来为训练样本开始做准备&#xff1a; 给不同标签做上标记…

都2023年了,还有人在盲目自学黑客?

背景 经常逛CSDN和知乎&#xff0c;不理解的是&#xff0c;都2023年了&#xff0c;相关资源都这么多了&#xff0c;还有人不知道怎么学习网络安全。 本人从事网络安全工作5年&#xff0c;在几个大厂都工作过&#xff0c;安全服务、渗透测试工程师、售前、主机防御等职位都做过…

如何实现不同的VLAN之间进行通信?VLAN Mapping大作用就体现出来了!

你好&#xff0c;这里是网络技术联盟站。 今天给大家介绍一下VLAN Mapping&#xff0c;包括VLAN Mapping的概念、原理、应用&#xff0c;同时还会介绍华为设备和思科设备如何配置VLAN Mapping。 让我们直接开始 1. 介绍 VLAN&#xff08;Virtual Local Area Network&#x…

JVM垃圾回收篇之垃圾收集器

五种引用 强引用(不回收) 强引用不会被强制垃圾回收,即使发生OOM也绝对不回收.保护了数据的安全性 软引用(内存不足即回收) 软引用是用来描述一些还有用&#xff0c;但非必需的对象。只被软引用关联着的对象&#xff0c;在系统将要发生内存溢出异常前&#xff0c;会把这些对…

为什么有些情况下需要重写equals()和hashCode()方法?

目录 方法作用实战案例 方法作用 equals()&#xff1a;判断对象是否相等&#xff0c;比如判断是否能放入Set集合中 情况1&#xff1a;没有重写equals()方法&#xff1a;由于所有类的默认基类都是Object类&#xff0c;所以默认使用Object类的equals()方法&#xff0c;那就是对象…

局域网内网穿透技术

文章目录 一、内网穿透概述1、传统内网穿透介绍2、ZeroTier和Tailscale 二、ZeroTier1、概述1.1 介绍1.2 相关概念 2、ZeroTier简单使用3、Moon搭建3.1 介绍3.2 部署Moon服务3.3 使用 Moon 服务 4、流量转发与局域网访问4.1 概述4.2 转发服务器配置4.3 客户端配置 三、Tailscal…

vulnhub靶场渗透之SickOs1.2渗透教程(超级详细)

vulnhub靶场渗透之SickOs1.2渗透教程目录 0x01靶机概述 0x02靶场环境搭建 0x03靶机信息发现 0x04渗透靶机 使用第二种方法&#xff1a;msfvenom生成载荷模块curl上传至服务器触发 0x05本地提权 方法一&#xff1a;将当前用户&#xff08;www-data&#xff09;加入sudo组 提…

SSM编程---Day 05

目录 一、IOC &#xff08;一&#xff09;企业级系统的特点&#xff1a; &#xff08;二&#xff09;Spring框架的优点&#xff1a; &#xff08;三&#xff09;ApplicationContext的作用&#xff1a; &#xff08;四&#xff09;理解IOC原理、掌握IOC的配置 二、AOP&…

三种快速转换PDF为TXT的方法:简单、高效、免费

如何将PDF转换为TXT文件&#xff1f;在日常生活中&#xff0c;PDF和TXT是常见的文本格式。PDF格式文件具有稳定的布局和易于存储的特点。然而&#xff0c;许多在线下载的电子书通常是以PDF格式提供的&#xff0c;而电子阅读器通常不支持PDF格式&#xff0c;这就导致了无法方便地…

【makefile】顶层Makefile向下层Makefile传递参数

一个项目中为了方便管理&#xff0c;每一个模块都会配一个makefile 以便于管理&#xff0c;我们实际在编译的时候&#xff0c;可能只编译其中某一个模块。偶尔下层的Makefile会需要用到上层Makefile文件中的某一个变量或者函数。 下面主要介绍两种方法&#xff0c;分别使用inc…

Innodb底层原理与Mysql日志机制深入剖析

1.MySQL的内部组件结构 客户端执行sql语句&#xff0c;这时mysql会把sql语句发给server层连接器&#xff0c;连接器通过账号密码端口号进行连接数据库&#xff0c;验证成功后&#xff0c;然后在权限表里查询相应的权限&#xff0c;然后依赖于此时读取权限&#xff0c;连接器把s…

【项目】Q-ROBOT移动机器人设计与开发

本文主要记录Q-ROBOT移动机器人的开发流程~ github: GitHub - Qsx567/SLAMCarProject &#xff08;持续更新中~希望各位铁子走过路过给个小小的star&#xff01;灰常感谢&#xff01;&#xff09; 本项目为我设计的移动SLAM机器人&#xff0c;命名为&#xff1a; Q-Robot 机…

【Python Dash】零基础也能轻松掌握的学习路线与参考资料

Python Dash是一个可视化框架&#xff0c;可以帮助开发者快速构建交互式仪表板和应用程序。它基于Plotly.js库建立&#xff0c;提供了一种易于使用的Python界面&#xff0c;用户可以通过简单的Python代码创建仪表板和应用程序。本篇文章将介绍Python Dash的学习路线&#xff0c…