k8s安装,linux-ubuntu上面kubernetes详细安装过程

官方文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/

环境配置

该部分每个主机都要执行

如果你确定不需要某个特定设置,则可以跳过它。

设置root登录

sudo passwd root
sudo vim /etc/ssh/sshd_config
PermitRootLogin yes # 添加
sudo systemctl restart sshd.service

关闭防火墙

sudo ufw status  (inactive 关闭的)
ufw enable | disable	#启动、关闭防火墙
ufw disable  (关闭防火墙)

关闭虚拟交换

swapoff -a  
vim /etc/fstab (注释fstab中swap配置)  
#/swap.img      none    swap    sw      0       0  
或者 sed -ri 's/.*swap.*/#&/' /etc/fstab

关闭SELinux 关闭安全机制

getenforce

某些ubuntu版本,没有安装selinux,则可以不用配置

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config 

修改主机名

 hostnamectl set-hostname {k8s-m|k8s-node1|k8s-node2}

配置多台主机 hosts

vim /etc/hosts
10.120.10.190   k8s-master
10.120.10.191   k8s-node1
10.120.10.192   k8s-node2

转发 IPv4 并让 iptables 看到桥接流量

载入如下内核模块,

sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOFsudo modprobe overlay
sudo modprobe br_netfilter

配置下面的网络参数 设置所需的 sysctl 参数,参数在重新启动后保持不变:

sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

应用 sysctl 参数而不重新启动

sudo sysctl --system

通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:

lsmod | grep br_netfilter
lsmod | grep overlay

通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

容器运行时

该部分每个主机都要执行

本文容器运行时用containerd,如果机子上有docker,containerd已经默认安装,不在需要安装。

安装containerd:

可以安装docker-ce的方式,安装包的时候只执行:sudo apt install -y containerd.io 参考博文 docker安装

步骤一:设置 Docker 的apt存储库。步骤二:执行 sudo apt install -y containerd.io

sudo apt install -y containerd.io
systemctl status containerd

配置containerd

1、生成默认配置

containerd config default > /etc/containerd/config.toml

如果 -bash: /etc/containerd/config.toml: No such file or directory 就mkdir /etc/containerd/

2、修改CgroupDriver为systemd

k8s官方推荐使用systemd类型的CgroupDriver。

vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]...[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup = true

也可以直接用命令修改:

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

如果你从软件包(例如,RPM 或者 .deb)中安装 containerd,你可能会发现其中默认禁止了 CRI 集成插件。

你需要启用 CRI 支持才能在 Kubernetes 集群中使用 containerd。 要确保 cri 没有出现在
/etc/containerd/config.toml 文件中 disabled_plugins列表内。如果你更改了这个文件,也请记得要重启 containerd。
可以执行:sed -i -r ‘/cri/s/(.*)/#\1/’ /etc/containerd/config.toml
如果你在初次安装集群后或安装 CNI 后遇到容器崩溃循环,则随软件包提供的 containerd 配置可能包含不兼容的配置参数。考虑按照
getting-started.md 中指定的 containerd config default >
/etc/containerd/config.toml 重置 containerd 配置,然后相应地设置上述配置参数。

3、重载沙箱(pause)镜像

正常情况下,国内你是拉取不到registry.k8s.io/pause:3.8镜像的,这个镜像是一切的pod的基础,要么自己手动导入进来,要么改成国内的镜像,通过设置以下配置来覆盖默认的沙盒镜像:
在你的 containerd 配置中, 你可以通过设置以下选项重载沙箱镜像:

[plugins."io.containerd.grpc.v1.cri"]sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

可以直接用命令:

sudo sed -i 's/sandbox_image = ".*"/sandbox_image = "registry.aliyuncs.com\/google_containers\/pause:3.9"/' /etc/containerd/config.toml

4、重启containerd

systemctl restart containerd

安装 kubeadm、kubelet 和 kubectl

每个机器都执行

更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:

sudo apt install -y apt-transport-https ca-certificates curl

下载签名秘钥及添加apt仓库

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat >/etc/apt/sources.list.d/kubernetes.list <<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt update

如果是国外机器,可以按照官方的方式:

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

在k8s-master上:

更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

用 kubeadm 初始化集群

# 初始化集群控制台 Control plane
# 失败了可以用 kubeadm reset 重置
kubeadm init --image-repository=registry.aliyuncs.com/google_containers# 记得把 kubeadm join xxx 保存起来 你需要此命令将节点加入集群。
# 忘记了重新获取:kubeadm token create --print-join-command#要使非 root 用户可以运行 kubectl,请运行以下命令, 它们也是 kubeadm init 输出的一部分:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

–kubernetes-version 指定版本
–apiserver-advertise-address 为通告给其它组件的IP,一般应为master节点的IP地址
–service-cidr 指定service网络,不能和node网络冲突
–pod-network-cidr 指定pod网络,不能和node网络、service网络冲突
–image-repository registry.aliyuncs.com/google_containers 指定镜像源,由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。如果k8s版本比较新,可能阿里云没有对应的镜像,就需要自己从其它地方获取镜像了。
–control-plane-endpoint 标志应该被设置成负载均衡器的地址或 DNS 和端口(可选)

查看集群是否处于健康状态:

kubectl get cs

如果遇到错误的情况,可使用 kubeadm reset 重置,然后重启主机,再次进行 初始化。

  kubectl get node    #查看集群节点状态kubectl get ns     #查看命名空间kubectl get pods -n kube-system   #查看pod状态 -n 指定命名空间

在master节点配置pod网络

在master上执行kubectl get nodes发现状态是NotReady,因为还没有部署CNI网络插件,在k8s系统上Pod网络的实现依赖于第三方插件进行,这类插件有近数十种之多,较为著名的有flannel、calico、canal和kube-router等。

安装 flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kube-flannel.yml 128行的网络配置,要和 pod-network-cidr保持一致 都是默认的就不用改了

等一会再看 kubectl get node 变成Ready了

在各个slave上:

node节点无需安装 kubectl 客户端工具。

安装包

sudo apt-get install -y kubelet kubeadm

加入集群

命令是上面在master上执行 kubeadm init时生成的

kubeadm join 192.168.0.21:6443 --token zle96a.xd9dlgl8l784sztm --discovery-token-ca-cert-hash sha256:7443840d39139b48f64c948c54cd926b3f9818d7bf07dcb74ce9f31126b0a668

在这里插入图片描述
在master上查看:
在这里插入图片描述

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

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

相关文章

HarmonyOS NEXT 使用XComponent + Vsync 实现自定义动画

介绍 XComponent 提供了应用在 native 侧调用 OpenGLES 图形接口的能力&#xff0c;本文主要介绍如何配合 Vsync 事件&#xff0c;完成自定义动画。在这种实现方式下&#xff0c;自定义动画的绘制不在 UI 主线程中完成&#xff0c;即使主线程卡顿&#xff0c;动画效果也不会受…

晶圆制造之MPW(多项目晶圆)简介

01、MPW是什么&#xff1f; 在半导体行业中&#xff0c;MPW 是 "Multi Project Wafer" 的缩写&#xff0c;中文意思是多项目晶圆。MPW 的主要思想是将使用相同工艺的多个集成电路设计放在同一晶圆片上进行流片&#xff08;即制造&#xff09;。这种方法允许多个设计共…

java学习笔记6

11. 类的封装 ​ 在Java中,**封装(Encapsulation)**是面向对象编程中的重要概念,它指的是将类的数据(属性)和行为(方法)绑定在一起,并对外部隐藏数据的具体实现细节,只通过公共方法来访问和操作数据。这有助于提高代码的安全性、可维护性和灵活性。 11.1 为什要封装 …

Python exe 文件反编译为 Python 脚本

文章目录 前言版本反编译Python 可执行文件&#xff08;.exe&#xff09;反编译打包一个简单的 .exe 可执行文件提取 pyc 文件使用脚本提取使用工具提取 将 .pyc 文件转换为 Python 脚本入口运行类非入口运行类转换补全后的 pyc 文件uncompyle6 反编译在线工具 可能遇到的问题P…

Golang context 原理分析

1. 说在前面2. 场景分析 2.1 链式传递2.2 主动取消2.3 任务超时2.4 数据存储 3. 源码解读 3.1 一个核心数据结构 3.1.1 Context 3.2 四种具体实现 3.2.1 emptyCtx3.2.2 cancelCtx3.2.3 timerCtx3.2.4 valueCtx 3.3 六个核心方法 3.3.1 Background() && TODO()3.3.2 Wit…

如何在在wordpress安装百度统计

前言 看过我的往期文章的都知道&#xff0c;我又建了一个网站&#xff0c;这次是来真的了。于是&#xff0c;最近在查阅资料时发现&#xff0c;有一款免费的软件可以帮我吗分析网站数据。&#xff08;虽然我的破烂网站压根没人访问&#xff0c;但是能装上的都得上&#xff0c;…

探索边缘计算:技术的新疆界

探索边缘计算&#xff1a;技术的新疆界 在当今迅速发展的数字化时代&#xff0c;云计算作为数据处理的主力军已广泛应用。但是&#xff0c;随着物联网&#xff08;IoT&#xff09;设备的急剧增加和数据生成速率的加快&#xff0c;云计算面临着种种挑战。边缘计算因此诞生&…

什么是Dubbo及其主要作用

在微服务架构日益盛行的今天&#xff0c;RPC&#xff08;远程过程调用&#xff09;技术成为了实现服务间通信的关键手段。而Dubbo&#xff0c;作为一款高性能、轻量级的开源Java RPC框架&#xff0c;受到了广大开发者的青睐。那么&#xff0c;Dubbo究竟是什么呢&#xff1f;它的…

STL-list的使用及其模拟实现

在C标准库中&#xff0c;list 是一个双向链表容器&#xff0c;用于存储一系列元素。与 vector 和 deque 等容器不同&#xff0c;list 使用带头双向循环链表的数据结构来组织元素&#xff0c;因此list插入删除的效率非常高。 list的使用 list的构造函数 list迭代器 list的成员函…

深度神经网络(DNN)

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个深度神经网络&#xff08;DNN&#xff09;模型程序,最后打印5个条件分别的影响力。 示例 在深度神经网络&#xf…

动态规划相关

动态规划相关 力扣509 斐波那契数列 完全递归解法 / 设置备忘录减少递归次数解法 都是 自顶向下力扣 509 斐波那契数列 动态规划 自底向上 力扣509 斐波那契数列 完全递归解法 / 设置备忘录减少递归次数解法 都是 自顶向下 public int fib(int n) {/** if(n<2){* return n;…

Matlab新手快速上手2(粒子群算法)

本文根据一个较为简单的粒子群算法框架详细分析粒子群算法的实现过程&#xff0c;对matlab新手友好&#xff0c;源码在文末给出。 粒子群算法简介 粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;是一种群体智能优化算法&#xff0c;灵感来源于…

【测试总结】测试时如何定位一个bug?是前端还是后端?

作为一道面试题&#xff0c;它算高频了么&#xff1f;我面试别人问多挺多次&#xff0c;我也被面试官问过... 相对来说多少能看出一点测试经验&#xff0c;实际测试中的排查问题能力... 1、前后端bug有各自的一些特点&#xff1a; 前端bug特性&#xff1a;界面相关&#xff0c…

计算机网络(第7版谢希仁)笔记

计算机网络 第一章 概述第二章 物理层第三章、数据链路层第四章 网络层第五章 运输层第六章、应用层第七章 网络安全 第一章 概述 1、三大类网络&#xff1a;电信网络、有线电视网络、计算机网络。 电信网络&#xff1a;提供电话、电报及传真服务。 有线电视网络&#xff1a;向…

目标检测YOLO数据集的三种格式及转换

目标检测YOLO数据集的三种格式 在目标检测领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;算法是一个流行的选择。为了训练和测试YOLO模型&#xff0c;需要将数据集格式化为YOLO可以识别的格式。以下是三种常见的YOLO数据集格式及其特点和转换方法。 1. YOL…

计算机系统结构(二) (万字长文建议收藏)

计算机系统结构 (二) 本文首发于个人博客网站&#xff1a;http://www.blog.lekshome.top/由于CSDN并不是本人主要的内容输出平台&#xff0c;所以大多数博客直接由md文档导入且缺少审查和维护&#xff0c;如果存在图片或其他格式错误可以前往上述网站进行查看CSDN留言不一定能够…

大话设计模式-里氏代换原则

里氏代换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09; 概念 里氏代换原则是面向对象设计的基本原则之一&#xff0c;由美国计算机科学家芭芭拉利斯科夫&#xff08;Barbara Liskov&#xff09;提出。这个原则定义了子类型之间的关系&#xff0…

【设计模式】7、decorate 装饰模式

文章目录 七、decorate 装饰模式7.1 饮料&#xff1a;类型配料7.1.1 drink_with_ingredient_test.go7.1.2 drink_with_ingredient.go7.1.3 drink.go 7.2 notifier7.2.1 notifier_decorator_test7.2.2 notifier_decorator7.2.3 notifier 7.3 idraw7.3.1 idraw_test7.3.2 idraw7.…

【人工智能基础】经典逻辑与归结原理

本章节的大部分内容与离散数学的命题、谓词两章重合。 假言推理的合式公式形式 R,R→P⇒PR,R∨P⇒P 链式推理 R→P,P→Q⇒R→QR∨P,P∨Q⇒R∨Q 互补文字&#xff1a;P和P 亲本子句&#xff1a;含有互补文字的子句 R∨P,P∨Q为亲本子句 注意&#xff1a; 必须化成析取范式…

命理八字之电子木鱼的代码实现

#uniapp# #电子木鱼# 不讲废话&#xff0c;上截图 目录结构如下图 功能描述&#xff1a; 点击一下&#xff0c;敲一下&#xff0c;伴随敲击声&#xff0c;可自动点击。自动点击需看视频广告&#xff0c;或者升级VIP会员。 疑点解答&#xff1a; 即animation动画的时候&…