最新k8s集群搭建教程

news2025/3/3 18:02:04

本次安装在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: false
      gateway4: 192.168.192.2
      nameservers:
          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 -y

 apt update
 
 curl -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.deb

 dpkg -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/.kube

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

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

export KUBECONFIG=/etc/kubernetes/admin.conf

export KUBECONFIG=/etc/kubernetes/admin.conf >> /etc/profile

source /etc/profile

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

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

kubectl 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/profile

source /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-user
  namespace: kubernetes-dashboard

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: 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.coloradmin.cn/o/895130.html

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

相关文章

【sgDragSize】自定义拖拽修改DIV尺寸组件,适用于窗体大小调整

核心原理就是在四条边、四个顶点加上透明的div,给不同方向提供按下移动鼠标监听 ,对应计算宽度高度、坐标变化 特性: 支持设置拖拽的最小宽度、最小高度、最大宽度、最大高度可以双击某一条边,最大化对应方向的尺寸;再…

Atlas 元数据管理

Atlas 元数据管理 1.Atlas入门 1.1概述 元数据原理和治理功能,用以构建数据资产的目录。对这个资产进行分类和管理,形成数据字典。 提供围绕数据资产的协作功能。 表和表之间的血缘依赖 字段和字段之间的血缘依赖 1.2架构图 导入和导出&#xff1…

前端如何安全的渲染HTML字符串?

在现代的Web 应用中,动态生成和渲染 HTML 字符串是很常见的需求。然而,不正确地渲染HTML字符串可能会导致安全漏洞,例如跨站脚本攻击(XSS)。为了确保应用的安全性,我们需要采取一些措施来在安全的环境下渲染…

速看!数据同步如何提升数据分析的准确性与效率?

在当今信息化时代,数据已经成为企业的核心资产。然而,随着数据的不断积累和业务的扩展,如何高效地进行数据分析成为了一个亟待解决的问题。本文将介绍一种重要的数据管理技术——数据同步,以及如何利用数据同步提升数据分析的准确…

【python游戏】这年头塔除了拆还能干什么?这款好玩上瘾的塔防游戏,了解一下嘛

目录标题 前言制作准备敲代码1)游戏运行主程序2)游戏开始界面3)游戏进行中界面4)游戏暂停界面5)炮塔类 效果展示尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 炮塔防御(Tower Defence&#xff…

小技巧:一键套用模板制作家具电子图册

​制作家具电子图册没有设计灵感怎么办? 可以看看小编分享的小技巧:一键套用模板的网站--------FLBOOK,轻轻松松制作一本别具一格的家具电子图册,操作方法非常简单 1.我们点击模板,在搜索框中搜索家具图册,选择自己喜欢的家具图册…

Vue3 setup新特性简单应用

去官网学习→组合式 API&#xff1a;setup() | Vue.js 运行示例&#xff1a; 代码&#xff1a;App.vue <template><div class"home"><img alt"Vue logo" src"../assets/logo.png"><!-- msg 组件传递数据 --><Hell…

团团代码生成器V2.0:一键生成完整的CRUD功能(重磅来袭!)

前言&#xff1a;考虑到在之前的V1.0版本只支持MySQL数据库&#xff0c;有点局限&#xff0c;因为在实际的项目开发中还会用到一个主流的Oracle数据库&#xff0c;所以我在V1.0的版本上进行了增强&#xff0c;新增了对Oracle数据库CRUD功能的生成&#xff0c;使用过程还是和V1.…

【Rust】Rust学习 第十五章智能指针

指针 &#xff08;pointer&#xff09;是一个包含内存地址的变量的通用概念。这个地址引用&#xff0c;或 “指向”&#xff08;points at&#xff09;一些其他数据。Rust 中最常见的指针是第四章介绍的 引用&#xff08;reference&#xff09;。引用以 & 符号为标志并借用…

外网远程连接Linux服务器

文章目录 视频教程1. Linux CentOS安装cpolar2. 创建TCP隧道3. 随机地址公网远程连接4. 固定TCP地址5. 使用固定公网TCP地址SSH远程 转发内网穿透文章. 本次教程我们来实现如何在外公网环境下&#xff0c;SSH远程连接家里/公司的Linux CentOS服务器&#xff0c;无需公网IP&…

【推荐】深入浅出benan的生命周期

目录 1.spring 管理JavaBean的过程&#xff08;生命周期&#xff09; 2.spring的JavaBean管理中单例模式及原型&#xff08;多例&#xff09;模式 2.1 . 默认为单例&#xff0c;但是可以配置多例 2.2.举例论证 2.2.1 默认单例 2.2.2 设置多例 2.2.3单例与多例的初始化的时…

【数学】CF1242 A

Problem - 1242A - Codeforces 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>#define int long longusing i64 long long;constexpr int N 2e3 10; constexpr int M 2e3 10; constexpr int mod 998244353; constexpr int Inf 1e1…

Java中级部分

以下内容来源自Java 面试指南 | JavaGuide(Java面试 学习指南)和自己的学习笔记整理&#xff0c;这里我整理了自己比较感兴趣的点&#xff0c;也有助于我自己理解~ 异常 Exception 和 Error 有什么区别&#xff1f; 在 Java 中&#xff0c;所有的异常都有一个共同的祖先 jav…

【学习笔记之vue】 Cannot find module ‘node-sass‘

Cannot find module node-sass方案一&#xff08;不通&#xff09; 下载node-sass组件 >> npm install -g cnpm>>cnpm install node-sass下载时报错 方案二 使用npm下载node-sass组件 >>npm install node-sassok

Oracle字段长度不足位数补零

Oracle字段长度不足位数补零 有时候从数据库中取出的月份值是1&#xff0c;而不是01&#xff0c;该怎么办呢 SELECTLPAD( CODE_MONTH, 2, 0 ) FROMtb_cube_TY001 WHERECODE_BM_MEATYPE TY20 AND code_measure MYLX01 AND code_month <> ~ AND CODE_ENTITY 01A AND…

Linux 进程间通信——信号量

一、信号量描述 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目。 获取资源时&#xff0c;需要对信号量的值进行原子减一&#xff0c;该操作被称为P操作&#xff0c;当信号量值为0时&#xff0c;代表没有资源可用&#xff0c;P操作会阻塞。释…

2023一建案例100题

一、某施工单位承接了两栋住宅楼&#xff0c;总建筑面积 65000m&#xff0c;均为筱板基础(上翻梁结构)&#xff0c;地下 2层&#xff0c;地上30 层&#xff0c;地下结构连通&#xff0c;上部为两个独立单体一字设置&#xff0c;设计形式一致&#xff0c;地下室外墙南北向距离 4…

008永磁电机FOC控制:磁场定向控制不就两个变换就搞定啦

在现代工业中&#xff0c;电机广泛应用于各类设备和机械系统中。为了提高电机性能并降低能量损耗&#xff0c;电机控制技术得到了不断的发展和创新。其中&#xff0c;磁场定向控制&#xff08;Field-Oriented Control&#xff0c;简称FOC&#xff09;作为一种先进的电机控制策略…

在 IDEA 中使用 Git开发 图文教程

在 IDEA 中使用 Git开发 图文教程 一、连接远程仓库二、IDEA利用Git进行开发操作三、分支操作3.1 新建分支3.2 切换分支3.3 删除分支3.4 比较分支3.5 合并分支 四、常用快捷键 一、连接远程仓库 一、打开IDEA&#xff0c;进入目录&#xff1a;File ->New ->Project from…

PHP之Base64+php://filter绕过、disabled_function绕过

目录 一、Base64php://filter绕过 1.思路分析 2.实践验证 二、disabled_function绕过 一、Base64php://filter绕过 上课讲了这样一道题&#xff0c;一起来看下(以下代码适用于PHP7.x及以上&#xff0c;5的版本会报错) <?php function fun($var): bool{$blacklist …