k8s的安装与部署

news2024/10/19 10:21:42

一、部署

1、实验环境

k8s-master172.25.254.200
k8s-node1172.25.254.10
k8s-node2172.25.254.20
docker-node1 172.25.254.100(harbor仓库)

2、相关操作

1.基础配置

所有节点关闭selinux和防火墙

systemctl disabled firewalld
systemctl stop firewalld
grubby --update-kernel ALL --args selinux=0
reboot

所有节点在每次开启的时候禁用swapon分区:

vim /etc/rc.d/rc.local
swapoff /dev/dm-1
chmod +x /etc/rc.d/rc.local

每台主机做DNS解析

# 添加解析      三台主机都需添加
[root@k8s-node2 ~]# vim /etc/hosts
[root@k8s-node2 ~]# cat /etc/hosts 
172.25.254.200  k8s-master.txy.org
172.25.254.10 k8s-node1.txy.org
172.25.254.20 k8s-node2.txy.org

所有节点安装docker

cat /etc/yum.repos.d/docker-ce.repo 
[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0
dnf install docker-ce -y

在所有的k8s节点创建放置证书的目录

[root@k8s-master ~]# mkdir /etc/docker/certs.d/reg.timinglee.org/ -p
 
把harbor仓库里的证书拷贝给k8s所有节点
 
ls /data/certs/
revkarl.org.crt  revkarl.org.key
scp /data/certs/timinglee.org.crt root@172.25.254.200:/etc/docker/certs.d/reg.timinglee.org/ca.crt
 
docker login reg.timinglee.org
docker info

请添加图片描述
安装k8s部署工具

[root@k8s-master ~]# cat /etc/yum.repos.d/k8s.repo 
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
gpgcheck=0
 
dnf install kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 -y
 
设置kubectl命令补齐功能:
dnf install bash-completion -y
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
 
在所有节点安装cri-docker
dnf install libcgroup-0.41-19.el8.x86_64.rpm \
> cri-dockerd-0.3.14-3.el8.x86_64.rpm -y
 
插件名称和容器镜像
vim /lib/systemd/system/cri-docker.service
 
在master节点拉取k8s所需镜像:
kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_contaniers \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock
 
上传镜像到harbor仓库
docker images | awk '/google/{ print $1":"$2}' \
| awk -F "/" '{system("docker tag "$0" reg.revkarl.org/k8s/"$3)}'
docker images | awk '/k8s/{system("docker push "$1":"$2)}'
2.集群初始化
#启动kubelet服务
[root@k8s-master ~]# systemctl status kubelet.service
 
#指定网络插件名称及基础容器镜像    
[root@k8s-master ~]# vim /lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=reg.txy.org/k8s/pause:3.9
[root@k8s-master ~]# systemctl daemon-reload 
[root@k8s-master ~]# systemctl restart cri-docker
[root@k8s-master ~]# ll /var/run/cri-dockerd.sock
srw-rw---- 1 root docker 0 Sep 10 09:26 /var/run/cri-dockerd.sock
[root@k8s-master ~]# scp /lib/systemd/system/cri-docker.service root@172.25.254.10:/lib/systemd/system/cri-docker.service
[root@k8s-master ~]# scp /lib/systemd/system/cri-docker.service root@172.25.254.20:/lib/systemd/system/cri-docker.service
[root@k8s-node1 ~]# systemctl daemon-reload
[root@k8s-node2 ~]# systemctl daemon-reload
[root@k8s-node1 ~]# systemctl restart cri-docker
[root@k8s-node2 ~]# systemctl restart cri-docker
 
#执行初始化命令
[root@k8s-master ~]# kubeadm init --pod-network-cidr=172.25.0.0/16 --image-repository reg.txy.org/k8s --kubernetes-version v1.30.0 --cri-socket=unix:///var/run/cri-dockerd.sock
 
[root@k8s-master ~]# kubeadm config images list
I0910 11:54:29.962229   41325 version.go:256] remote version is much newer: v1.31.0; falling back to: stable-1.30
registry.k8s.io/kube-apiserver:v1.30.4
registry.k8s.io/kube-controller-manager:v1.30.4
registry.k8s.io/kube-scheduler:v1.30.4
registry.k8s.io/kube-proxy:v1.30.4
registry.k8s.io/coredns/coredns:v1.11.1
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.12-0
 
 
# 若初始化失败,则重置
[root@k8s-master ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock       
3.安装flannel网络插件
#指定集群配置文件变量
[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
#当前节点没有就绪,还没有安装网络插件,容器没有运行
[root@k8s-master ~]# kubectl get nodes
NAME                STATUS     ROLES           AGE     VERSION
k8s-master.zx.org   NotReady   control-plane   5m41s   v1.30.0
[root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@k8s-master ~]# source ~/.bash_profile
 
[root@k8s-master ~]# vim kube-flannel.yml     # 将镜像下载地址改成本地(image)
[root@k8s-master ~]# grep -n image kube-flannel.yml    #需要修改以下几行
146:        image: flannel/flannel:v0.25.5
173:        image: flannel/flannel-cni-plugin:v1.5.1-flannel1
184:        image: flannel/flannel:v0.25.5
 
[root@k8s-master ~]# docker load -i flannel-0.25.5.tag.gz 
 
# docker仓库中新建flannel项目
# 打标签上传
[root@k8s-master ~]# docker tag flannel/flannel:v0.25.5 
[root@k8s-master ~]# docker push reg.txy.org/flannel/flannel:v0.25.5
[root@k8s-master ~]# docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 
[root@k8s-master ~]# docker push reg.txy.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
 
#安装flannel网络插件
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml 
namespace/kube-flannel created
serviceaccount/flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
 
[root@k8s-master ~]# kubectl get nodes
NAME                STATUS   ROLES           AGE   VERSION
k8s-master.txy.org   Ready    control-plane   25m   v1.30.0
4.节点扩容

在所有的worker节点中

1 确认部署好以下内容

2 禁用swap

3 安装:

kubelet-1.30.0

kubeadm-1.30.0

kubectl-1.30.0

docker-ce

cri-dockerd

4 修改cri-dockerd启动文件添加

–network-plugin=cni

–pod-infra-container-image=reg.txy.org/k8s/pause:3.9

5 启动服务

kubelet.service

cri-docker.service

确认完毕信息后即可加入集群

# 这个阶段如果生成的集群token(初始化时生成)找不到了可以重新生成
 
[root@k8s-master ~]# kubeadm token create --print-join-command
 
[root@k8s-node1 ~]# kubeadm join 172.25.254.200:6443 --token lma300.jusxu3igmuk5dfym   --discovery-token-ca-cert-hash sha256:e107ffc608928f2337bf7742bc9b3024c6f7e179a15af2233e8092ae57c68a99 --cri-socket=unix:///var/run/cri-dockerd.sock
[root@k8s-node2 ~]# kubeadm join 172.25.254.200:6443 --token lma300.jusxu3igmuk5dfym   --discovery-token-ca-cert-hash sha256:e107ffc608928f2337bf7742bc9b3024c6f7e179a15af2233e8092ae57c68a99 --cri-socket=unix:///var/run/cri-dockerd.sock
[root@k8s-master ~]# kubectl get nodes 
NAME                STATUS   ROLES           AGE   VERSION
k8s-master.txy.org   Ready    control-plane   64m   v1.30.0
k8s-node1.txy.org    Ready    <none>          32m   v1.30.0
k8s-node2.txy.org    Ready    <none>          32m   v1.30.0
 
# 测试集群运行情况
[root@k8s-master ~]# kubectl run test --image nginx        #建立一个pod
pod/test created
[root@k8s-master ~]# kubectl get pods                      #查看pod状态
# 重新做集群
[root@k8s-master ~]# kubectl delete nodes k8s-node1.txy.org
[root@k8s-master ~]# kubectl delete nodes k8s-node2.txy.org
[root@k8s-master ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
# 重新做初始化集群
[root@k8s-master ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 \
--image-repository reg.txy.org/k8s \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock
 
[root@k8s-master ~]# vim kube-flannel.yml    # 修改image
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml
 
[root@k8s-node1 ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
[root@k8s-node2 ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
 
# 再重新将节点加入集群
[root@k8s-node1 ~]# kubeadm join 172.25.254.200:6443 --token lma300.jusxu3igmuk5dfym   --discovery-token-ca-cert-hash sha256:e107ffc608928f2337bf7742bc9b3024c6f7e179a15af2233e8092ae57c68a99 --cri-socket=unix:///var/run/cri-dockerd.sock
 
[root@k8s-node2 ~]# kubeadm join 172.25.254.200:6443 --token lma300.jusxu3igmuk5dfym   --discovery-token-ca-cert-hash sha256:e107ffc608928f2337bf7742bc9b3024c6f7e179a15af2233e8092ae57c68a99 --cri-socket=unix:///var/run/cri-dockerd.sock
[root@k8s-master ~]# kubectl get nodes 

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

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

相关文章

商贸物流产业大脑:打造“产-供-销,仓-运-配”全流程供应链

商贸物流产业大脑&#xff1a;打造“产-供-销&#xff0c;仓-运-配”全流程供应链 在全球化竞争日益激烈的今天&#xff0c;商贸物流产业的效率和创新力成为企业能否脱颖而出的关键因素。然而&#xff0c;信息不对称、资源配套不准确、系统独立运作等痛点严重阻碍了商贸物流产…

# LangGraph 入门(二)- ChatBot demo

在这个快速入门 demo 中&#xff0c;我们将会使用 langGraph 构建一个基本的对话机器人和可是使用网络搜索的机器人。通过这个 demo 我们来快速对 langgraph 有一定感知。 概念补充 顾名思义langGraph是基于图&#xff08;Graph Theory&#xff09;的&#xff0c;如果你学过图…

【算法】约瑟夫环问题

据说著名的犹太历史学家Josephus有过以下故事&#xff0c; 罗马人占领乔塔帕特&#xff0c; 39个犹太人与Josephus和他的朋友躲在洞中&#xff0c;其中39个犹太人决定自杀&#xff0c; &#xff0c;他们的自杀方式是41个人绕成一圈&#xff0c;第一个人报数1&#xff0c;报数到…

RK3588的demo板学习

表层的线宽是3.8mil: 换层之后线宽变成了4.2mil: (说明对于一根线&#xff0c;不同层线宽不同) 经典&#xff1a; 开窗加锡&#xff0c;增强散热&#xff0c;扩大电流&#xff1a; R14的作用&#xff1a;与LDO进行分压&#xff0c;降低LDOP的压差从而减小其散热&#xff1a;第…

如何系统的从0到1学习大模型?有哪些书籍推荐?

大模型应用得好&#xff0c;不仅需要海量的基础数据、大规模算力、综合人工智能发展成果的技术&#xff0c;还需要政产学研用各方的共同推进。 大模型不仅能生成结果、生成数据&#xff0c;更能传递价值观。应用于我国的大模型需要懂中文、懂中国文化、懂中国国情。大模型是全…

【Linux系统编程】环境基础开发工具使用

目录 1、Linux软件包管理器yum 1.1 什么是软件包 1.2 安装软件 1.3 查看软件包 1.4 卸载软件 2、Linux编辑器-vim 2.1 vim的概念 2.2 vim的基本操作 2.3 vim的配置 3、Linux编译器-gcc/g 3.1 gcc编译的过程​编辑​编辑​编辑 3.2 详解链接 动态链接 静态链接 4…

纯HTML实现标签页切换

纯HTML实现标签页切换 实现原理&#xff1a; HTML结构&#xff1a; 使用无序列表&#xff08;<ul>&#xff09;创建标签导航。每个标签是一个列表项&#xff08;<li>&#xff09;&#xff0c;包含一个链接&#xff08;<a>&#xff09;。每个链接指向对应的内…

商品计划:零售企业的痛点破解与运营优化指南

在现代零售业的激烈竞争中&#xff0c;商品计划不仅是企业盈利的关键&#xff0c;更是解决众多痛点的有效途径。零售企业在运营过程中常常面临各种挑战&#xff0c;如财务问题、库存管理、市场分析等。而科学、系统的商品计划可以帮助企业有效应对这些挑战&#xff0c;提升整体…

气膜:冰雪产业的创新解决方案—轻空间

随着冰雪运动的普及和发展&#xff0c;如何在不同季节和地区有效开展冰雪项目&#xff0c;成为了行业内的一个重要课题。气膜作为一种新兴的建筑形式&#xff0c;凭借其独特的优势&#xff0c;正在逐渐成为冰雪产业的创新解决方案。 优越的建筑特性 气膜建筑以其轻便、快速搭建…

Web Storage:数据储存机制

前言 在HTML5之前&#xff0c;开发人员一般是通过使用Cookie在客户端保存一些简单的信息的。在HTML5发布后&#xff0c;提供了一种新的客户端本地保存数据的方法&#xff0c;那就是Web Storage&#xff0c;它也被分为&#xff1a;LocalStorage和SessionStorage&#xff0c;它允…

【黑马redis高级篇】持久化

//来源[01,05]分布式缓存 除了黑马&#xff0c;还参考了别的。 目录 1.单点redis问题及解决方案2.为什么需要持久化&#xff1f;3.Redis持久化有哪些方式呢&#xff1f;为什么我们需要重点学RDB和AOF&#xff1f;4.RDB4.1 定义4.2 触发方式4.2.1手动触发save4.2.2被动触发bgsa…

软件工程:需求规格说明书(图书管理系统)

目录 1 导言 1.1 编写目的 1.2 参考资料 2 项目介绍 2.1 项目背景 2.2 项目目标 3 应用环境 3.1 系统运行网络环境 ​编辑 3.2 系统软硬件环境 4 功能模型 4.1 功能角色分析 4.1.1 图书管理员 4.1.2 普通读者 4.1.3 邮件系统 4.2 功能性需求 4.2.1 预定图…

AI+Xmind彻底解决你的思维导图

在写作领域、老师授课、产品经理等都会使用到思维导图&#xff0c;如果是一个个拖拉撰写太麻烦了。 本篇内容小索奇就教会大家利用AI结合Xmind制作思维导图。 先打开我们的AI软件 这里小索奇用ChatGPT&#xff08;可以使用kimi&#xff0c;豆包等大模型都可以&#xff09; P…

中小型医院网站开发:Spring Boot入门

2 相关技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xff0c;…

上市公司资产误定价Misp计算数据-含参考资料及代码(2006-2023年)

数据说明&#xff1a;参考《经济研究》期刊游家兴&#xff08;2012&#xff09;老师的做法&#xff0c;先根据行业内所有公司推算出公司的基础价值&#xff0c;进而通过对公司的实际价值与基础价值进行对比&#xff0c; 来衡量公司相对于业内同行的误定价水平&#xff0c;具体大…

D39【python 接口自动化学习】- python基础之函数

day39 函数的返回值 学习日期&#xff1a;20241016 学习目标&#xff1a;函数&#xfe63;-52 函数的返回值&#xff1a;如何得到函数的执行结果&#xff1f; 学习笔记&#xff1a; return语句 返回值类型 def foo():return abc var foo() print(var) #abc# 函数中return函…

python实现录屏功能

python实现录屏功能 将生成的avi文件转为mp4格式后删掉avi文件 参考感谢&#xff1a;https://www.cnblogs.com/peachh/p/16549254.html import os import cv2 import time import threading import numpy as np from PIL import ImageGrab from pynput import keyboard from da…

统一认证与单点登录:简化用户体验的关键解决方案

引言 在数字化时代&#xff0c;企业往往需要管理多个应用和系统&#xff0c;随之而来的是用户密码和身份认证管理的复杂性。统一认证&#xff08;Single Sign-On, SSO&#xff09;作为一种身份管理解决方案&#xff0c;不仅可以减少用户在多个系统间切换登录的麻烦&#xff0c…

选择合适的SSL证书

随着我们在线业务的增长&#xff0c;确保网站安全变得越来越重要。对于许多人来说&#xff0c;保护网站安全的想法似乎令人望而生畏&#xff0c;尤其是在有各种SSL证书可用的情况下。您可能想知道哪一个最适合您的业务需求或如何浏览这些选项。 除了SSL证书之外&#xff0c;使…

Nuxt.js 应用中的 app:resolve 事件钩子详解

title: Nuxt.js 应用中的 app:resolve 事件钩子详解 date: 2024/10/17 updated: 2024/10/17 author: cmdragon excerpt: app:resolve 是 Nuxt.js 中的生命周期钩子,在解析 app 实例后调用。这个钩子允许开发者在应用完全初始化后执行一些自定义操作,比如注册插件、设置中…