最新k8s集群搭建教程

本次安装在vmware虚拟机下开启3台2核2g的Ubuntu20.04系统
master:192.168.192.137
node1:192.168.192.136
node2:192.168.192.138

关闭防火墙
先查看防火墙状态,如果是关闭就不用管

ufw status

在这里插入图片描述
关闭selinux,如果没有安装selinux就不用管,下图就显示没有安装。

setenforce 0

在这里插入图片描述
分别修改三台主机的hostname,改成对应的名称:master,node1,node2

vim /etc/hostname

:在这里插入图片描述
修改三台主机hosts文件

vim /etc/hosts

三台都需要添加

192.168.192.137 master
192.168.192.136 node1
192.168.192.138 node2

在这里插入图片描述
将桥接的IPv4流量传递到iptables的链

vim /etc/sysctl.d/k8s.conf

三台都要添加

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward                 = 1

在这里插入图片描述
使之生效

sysctl --system 

设置单台主机的静态ip
查看路由表找到网关地址

route -n

在这里插入图片描述
在三台主机上分别配置静态ipv4地址

vim /etc/netplan/00-installer-config.yaml

在这里插入图片描述

network:ethernets:ens33:addresses: [192.168.192.137/24]dhcp4: falsegateway4: 192.168.192.2nameservers:addresses: [192.168.192.2,114.114.114.114]version: 2

使配置的ip地址生效

netplan apply

在三台主机上配置NTP时间同步

(设置时区)
timedatectl set-timezone Asia/Shanghai
apt install ntpdate
ntpdate ntp.ntsc.ac.cn
(查看时间)
hwclock

设置时区后再次执行date查看时间日期最后是否变成了CST。最后为了使得系统日志的时间戳也立即生效,需要执行一下命令重启rsyslog:

sudo systemctl restart rsyslog

关闭swap

vim /etc/fstab

注释掉swap.img none swap sw 0 0这行
在这里插入图片描述

docker 安装
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -yapt updatecurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"apt-get install docker-ce docker-ce-cli containerd.io

安装 cri-dockerd因为k8s在1.24移除了Dockershim,所以需要一个支持cri的插件
查看系统下载对应的版本

lsb_release -a

在这里插入图片描述

在这里插入图片描述

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd_0.3.4.3-0.ubuntu-focal_amd64.debdpkg -i cri-dockerd_0.3.4.3-0.ubuntu-focal_amd64.deb# 重载系统守护进程systemctl daemon-reload# 设置cri-dockerd自启动
systemctl enable cri-docker.socket cri-docker# 启动cri-dockerd
start cri-docker.socket cri-docker 
查看cri-docker状态
systemctl status cri-docker.socket

安装 kubectl

#用以下命令下载最新发行版curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"#下载验证该可执行文件
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"基于校验和文件,验证 kubectl 的可执行文件:
echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check验证通过时,输出为:
kubectl: OK安装 kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl验证安装是否成功
kubectl version --client

在这里插入图片描述

安装 kubeadm
····
apt-get update

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

mkdir -p /etc/apt/keyrings/

chmod -R 755 /etc/apt/keyrings

curl -fsSL https://dl.k8s.io/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg

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

apt-get install -y kubelet kubeadm kubectl

apt-mark hold kubelet kubeadm kubectl

#设置kubelet自启动
sudo systemctl enable --now kubelet
····

安装runc
在这里插入图片描述

#安装runc
sudo install -m 755 runc.amd64 /usr/local/bin/runc
#检查是否安装成功
runc -v 

在这里插入图片描述
初始化master(只需要在master执行)

kubeadm init --node-name=master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.192.137 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12--node-name=master 节点名称就是当前主机的hostname
--image-repository=registry.aliyuncs.com/google_containers 设置为阿里镜像
--cri-socket=unix:///var/run/cri-dockerd.sock # 这是指定容器运行时
--apiserver-advertise-address=192.168.56.50 # 为API server设置广播地址,这里选择本机的ipv4地址,这里不希望API SERVER设置在其他node上的话就不要改为其他地址。
--pod-network-cidr=10.244.0.0/16 # 指明 pod 网络可以使用的 IP 地址段,暂时不清楚的可以先不管就用这个值。
--service-cidr=10.96.0.0/12 # 为服务的虚拟 IP 地址另外指定 IP 地址段,暂时不清楚的可以先不管就用这个值。

安装成功会显示
在这里插入图片描述
按提示执行

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configexport KUBECONFIG=/etc/kubernetes/admin.confexport KUBECONFIG=/etc/kubernetes/admin.conf >> /etc/profilesource /etc/profile

安装配置cni网络插件flannel
在这里插入图片描述

wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.ymlkubectl apply -f kube-flannel.yml

让Node节点加入Master,下面的命令在master安装成功后会有

kubeadm join 192.168.192.137:6443 --token ut7ln6.s8crplgxko21wqyv --discovery-token-ca-cert-hash sha256:495ffbf5e18082d0d88e0c0abb3e68d0a841eef257d8b3a844763efc951e4704

加入后执行

echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profilesource /etc/profile

在三台主机上都可以查询节点状态

kubectl get nodes

在这里插入图片描述
查看k8s状态命令

systemctl status kubelet

安装k8s界面(在master执行)

Dashboard

在这里插入图片描述
先下载文件,需要将ClusterIP改成NodePort才能非本地访问

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

修改recommended.yaml

vim recommended.yaml 
在下面位置添加
type: NodePort

在这里插入图片描述
查看 Dashboard 暴露外网端口
在这里插入图片描述
创建账户,生成token

vim dashboard-account.yaml

写入下面内容

apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

执行文件

kubectl apply -y dashboard-account.yaml

获取账户token

kubectl -n kubernetes-dashboard create token admin-user

在这里插入图片描述
输入token登录查看
https://192.168.192.137:31711
在这里插入图片描述
在这里插入图片描述
参考文章
http://www.uml.org.cn/yunjisuan/2022051844.asp
https://blog.csdn.net/weixin_39246554/article/details/128123553

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

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

相关文章

SystemVerilog interface使用说明

1. Interface概念 System Verilog中引入了接口定义,接口与module 等价的定义,是要在其他的接口、module中直接定义,不能写在块语句中,跟class是不同的。接口是将一组线捆绑起来,可以将接口传递给module。 2. 接口的优…

JAVA免杀学习与实验

1 认识Webshell 创建一个JSP文件&#xff1a; <% page import"java.io.InputStream" %> <% page import"java.io.BufferedReader" %> <% page import"java.io.InputStreamReader" %> <% page language"java" p…

python的全局解释锁(GIL)

一、介绍 全局解释锁&#xff08;Global Interpreter Lock&#xff0c;GIL&#xff09;是在某些编程语言的解释器中使用的一种机制。在Python中&#xff0c;GIL是为了保证解释器线程安全而引入的。 GIL的作用是在解释器的执行过程中&#xff0c;确保同一时间只有一个线程可以…

JVM——引言+JVM内存结构

引言 什么是JVM 定义: Java VirtualMachine -java 程序的运行环境 (ava 二进制字节码的运行环境) 好处: 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能数组下标越界检查&#xff0c;多态 比较: jvm jre jdk 学习jvm的作用 面试理解底层实现原理中…

目标检测(Object Detection)

文章目录 1. 目标检测1.1 目标检测简要概述及名词解释1.2 IOU1.3 TP TN FP FN1.4 precision&#xff08;精确度&#xff09;和recall&#xff08;召回率&#xff09; 2. 边框回归Bounding-Box regression3. Faster R-CNN3.1 Faster-RCNN&#xff1a;conv layer3.2 Faster-RCNN&…

Photoshop制作漂亮光泽感3D按钮

原文链接(https://img-blog.csdnimg.cn/45472c07f29944458570b59fe1f9a0e0.png)

直线导轨的选购要素

直线导轨是用来支撑和引导运动部件&#xff0c;按给定的方向做往复直线运动&#xff0c;主要用于精密机床、坐标测量机和大型机床&#xff0c;对于我们整个国民生产、生活活动都起着至关重要的作用。 我们在选购直线导轨时&#xff0c;都想要选到质量好的&#xff0c;那么我们要…

手把手教学——终端工具xshell与文件传输工具xftp使用步骤及详解

前言 xshell是一款常用于连接本地linux服务以及云服务器的终端远程连接工具&#xff0c;该款终端工具常搭配远程文件传输工具xftp一起使用&#xff0c;由于还有很多小伙伴还不知道这两款终端工具的使用流程及步骤&#xff0c;Darren洋在这里给小伙伴们进行详细讲解。 一、下载工…

慎用!澳洲留学生用ChatGPT写论文被控学术不端!AI论文漏洞百出,各高校已加强捡测!

自从进入ChatGPT时代以来&#xff0c;留学生们纷纷表示写作业&#xff0c;so easy。留学生们在用AI写论文时候没有预计到的是&#xff0c;ChatGPT存在杜撰文献的问题&#xff0c;并且学校已经在使用AI检测工具。 目前全澳大多数大学都可以选择使用现在很流行的反剽窃软件服务T…

合并多个文本文件

使用 wxPython 模块合并多个文本文件的博客。以下是一篇示例博客&#xff1a; C:\pythoncode\blog\txtmerge.py 在 Python 编程中&#xff0c;我们经常需要处理文本文件。有时候&#xff0c;我们可能需要将多个文本文件合并成一个文件&#xff0c;以便进行进一步的处理或分析。…

图像编程补充:计算机图形学和数字图像处理概念

一、计算机图形学 国际标准化组织&#xff08;ISO&#xff09;的定义&#xff1a;计算机图形学是研究通过计算机将数据转换为图形&#xff0c;并在专门显示设备上显示的原理、方法和技术的学科。 1.1什么是计算机图形学 图形的构成要素&#xff1a; 图形的广义概念&#xff1…

C语言——通讯录详解(动态版)

通讯录详解 前言&#xff1a;一、定义一个通讯录二、初始化三、增加联系人3.1 给通讯录扩容3.2增加联系人 四、释放内存五、完整代码 前言&#xff1a; 我们已经学过了通讯录的静态版&#xff0c;但是它的缺点很明显&#xff0c;通讯录满了就添加不了联系人了啦。我再让通讯录升…

《Linux从练气到飞升》No.15 Linux 环境变量

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

【linux基础(四)】对Linux权限的理解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到开通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux权限 1. 前言2. shell命…

2023 最新 小丫软件库app开源源码 PHP后端

上传了源码解压之后&#xff0c;在admin/public/config.php修改后台登录账号和密码 后台地址&#xff1a;域名或者ip/admin 然后自己修改配置即可 后端搭建完成&#xff0c;现在导入iapp源码 导入iapp源码之后&#xff0c;修改mian.iyu载入事件的对接api和url就可以打包了 sss …

哈工大开源“活字”对话大模型

一、介绍 大规模语言模型&#xff08;LLM&#xff09;在自然语言处理的通用领域已取得了令人瞩目的成功。对于广泛的应用场景&#xff0c;这种技术展示了强大的潜力&#xff0c;学术界和工业界的兴趣也持续升温。哈工大自然语言处理研究所30余位老师和学生参与开发了通用对话大…

小米分享 | 解密面试题:网易面试如何回答“创建线程有哪几种方式?”

大家好&#xff0c;我是你们的小米&#xff01;今天要和大家一起探讨一个在技术面试中常见的问题&#xff1a;创建线程有哪几种方式&#xff1f;这可是个经典面试题哦&#xff01;不过别担心&#xff0c;小米在这里为你详细解析&#xff0c;帮你轻松应对&#xff0c;让你在面试…

stm32控制蜂鸣器源代码(附带proteus线路图)

说明&#xff1a; 1 PB0输出0时&#xff0c;蜂鸣器发生&#xff1b; 2 蜂鸣器电阻值如果太大会导致电流太小&#xff0c;发不出声音&#xff1b; 3蜂鸣器额定电压需要设置得低一点&#xff0c;可以是2V&#xff0c;但不能高于3V&#xff0c;这更右上角的电阻值有关系&#x…

【Linux】make/makefile自动化构建工具

文章目录 前言一、什么是make/makefile&#xff1f;二、依赖关系和依赖方法2.1 makefile中创建文件2.2 makefile中删除文件2.3 stat指令查看文件的三种时间&#xff08;ACM&#xff09;2.4 伪目标文件&#xff08;.PHONY&#xff09; 三、Makefile中的一些特殊符号3.1 $ 和 $^3…

【深入理解ES6】字符串和正则表达式

概念 字符串&#xff08;String&#xff09;是JavaScript6大原始数据类型。其他几个分别是Boolean、Null、Undefined、Number、Symbol&#xff08;es6新增&#xff09;。 更好的Unicode支持 1. UTF-16码位 字符串里的字符有两种&#xff1a; 前 个码位均以16位的编码单元…