Kubeadmin实现k8s集群:

Kubeadmin来快速搭建一个k8s集群:

二进制搭建适合大集群,50台以上的主机,

但是kubeadm更适合中小企业的业务集群

环境:

Master:20.0.0.71  2核4G 或者4核8G  docker kubelet kubectl flannel

Node1:20.0.0.72   2核4G  或者4核8G docker kubelet kubectl flannel

Node2:  20.0.0.73   2核4G docker kubelet kubectl flannel

Harbor节点:20.0.0.74  2核4Gdocker-compose harbor

实验开始:

所有节点

systemctl stop firewalld

setenforce 0

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

swapoff -a

所有节点

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^.*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

改主机名

master1:

hostnamectl set-hostname master01

node1:

hostnamectl set-hostname node01

node2:

hostnamectl set-hostname node02

映射

做内核优化:

vim /etc/sysctl.d/k8s.conf

#开启网桥模式:

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

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

#网桥的流量传给iptables链,实现地址映射

#关闭ipv6的流量(可选项)

net.ipv6.conf.all.disable_ipv6=1

#根据工作中的实际情况,自定

net.ipv4.ip_forward=1

wq!

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

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

net.ipv6.conf.all.disable_ipv6=1

net.ipv4.ip_forward=1

##

sysctl --system

时间同步(全部)

yum install ntpdate -y

ntpdate ntp.aliyun.com

date

所有节点安装docker

###

资源控制器必须systemd(三台)

mkdir /etc/docker

cat > /etc/docker/daemon.json <<EOF

{

  "registry-mirrors": ["https://pkm63jfy.mirror.aliyuncs.com"],

  "exec-opts": ["native.cgroupdriver=systemd"],

  "log-driver": "json-file",

  "log-opts": {

    "max-size": "100m"

  }

}

EOF

systemctl daemon-reload

systemctl restart docker.service

systemctl enable docker.service

docker info | grep "Cgroup Driver"

Cgroup Driver: systemd

安装kuberctl(三台)

//定义kubernetes源

cat > /etc/yum.repos.d/kubernetes.repo << EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15

//查看初始化需要的镜像

kubeadm config images list --kubernetes-version 1.20.15

k8s.gcr.io/kube-apiserver:v1.20.15

k8s.gcr.io/kube-controller-manager:v1.20.15

k8s.gcr.io/kube-scheduler:v1.20.15

k8s.gcr.io/kube-proxy:v1.20.15

k8s.gcr.io/pause:3.2

k8s.gcr.io/etcd:3.4.13-0

k8s.gcr.io/coredns:1.7.0

取消同步操作

主节点操作:

//查看初始化需要的镜像

kubeadm config images list --kubernetes-version 1.20.15

解析:

Pause:特殊的pod

Pause会在节点上创建一个网络命名空间,其他容器可以加入这个网络命名空间

Pod里面的容器可能使用不同的代码架构编写,可以在一个网络空间里面实现通信,协调这个命名空间里面的资源(实现pod内容器的兼容性)

Kubeadm安装的k8s都是以pod的形式运行在kube-system这个空间当中

Kubeletnode管理器可以进行系统控制

kubeadm init \

 --apiserver-advertise-address=20.0.0.71 \

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

 --kubernetes-version=v1.20.15 \

 --service-cidr=10.96.0.0/16 \

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

 --token-ttl=0

第二行:声明master节点的apiserver法人监听地址

第三行:声明拉取镜像的仓库,使用阿里云

第四行:k8s的版本号

第五行:所有server的对外代理地址都是10.96.0.0/16

第六行:所有pod的IP地址的网段

第七行:默认的token的有效期,默认是24小时,0表示永不过期

将黑色代码,复制到两个node节点,node1,node2执行

mkdir -p $HOME/.kube

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

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

systemctl restart kubelet

初始化后需要修改 kube-proxy 的 configmap,开启 ipvs

kubectl edit cm kube-proxy -n=kube-system

修改mode: ipvs

Systemctl restart kublet

kubectl get nodes

kubectl get cs发现集群不健康,更改以下两个文件

修改监听地址

vim /etc/kubernetes/manifests/kube-scheduler.yaml

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

systemctl restart kubelet

kubectl get pods -n kube-system

部署网络(三台)

//所有节点上传 flannel 镜像 flannel.tar 和网络插件 cni-plugins-linux-amd64-v0.8.6.tgz 到 /opt 目录,

master节点上传 kube-flannel.yml 文件

cd /opt

docker load < flannel.tar

mv /opt/cni /opt/cni_bak

mkdir -p /opt/cni/bin

tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin

主节点:

//在 master 节点创建 flannel 资源

kubectl apply -f kube-flannel.yml

kubectl get node

删除节点:

kubectl delete node master01

kubectl get pod -n kube-system

证书有效期

#证书有效期的问题,kubeadm默认只有1年:

openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text | grep Not

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not

chmod 777 update-kubeadm-cert.sh all

./update-kubeadm-cert.sh all

看有效期

运行脚本改日期

赋权,然后运行脚本

//在master节点查看节点状态

kubectl get nodes

kubectl get pods -n kube-system

添加自动补齐

集群已经搭建完毕

验证

创建镜像

kubectl create deployment nginx --image=nginx --replicas=3

kubectl get pods

kubectl describe pod

pod后面加name,可以查看状态

做个server

kubectl get svc

Curl +ip :31038

搭建仓库:

Test4:

//上传 harbor-offline-installer-v2.8.1.tgz 和 docker-compose 文件到 /opt 目录

cd /opt

cp docker-compose /usr/local/bin/

chmod +x /usr/local/bin/docker-compose

tar zxvf harbor-offline-installer-v2.8.1.tgz

cd harbor/

vim harbor.yml

安装 部署与k8s集群对接的Harbor仓库

//上传 harbor-offline-installer-v2.8.1.tgz 和 docker-compose 文件到 /opt 目录

cd /opt

cp docker-compose /usr/local/bin/

chmod +x /usr/local/bin/docker-compose

tar zxvf harbor-offline-installer-v2.8.1.tgz

cd harbor/

vim harbor.yml

hostname = hub.test.com

   https:

     # https port for harbor, default is 443

  port: 443

     # The path of cert and key files for nginx

     certificate: /data/cert/server.crt

     private_key: /data/cert/server.key

harbor_admin_password = 123456

//生成证书

mkdir -p /data/cert

cd /data/cert

#生成私钥

openssl genrsa -des3 -out server.key 2048

输入两遍密码:123456

openssl genrsa: 用于生成 RSA 密钥。

-des3: 使用 Triple DES 加密算法对生成的私钥进行加密。

-out server.key: 指定生成的私钥文件的名称为 server.key。

2048: 指定 RSA 密钥的位数为 2048 位。

#生成证书签名请求文件

openssl req -new -key server.key -out server.csr

输入私钥密码:123456

输入国家名:CN

输入省名:BJ

输入市名:BJ

输入组织名:TEST

输入机构名:TEST

输入域名:hub.kgc.com

输入管理员邮箱:admin@test.com

其它全部直接回车

#备份私钥

cp server.key server.key.org

#清除私钥密码

openssl rsa -in server.key.org -out server.key

输入私钥密码:123456

#签名证书

openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt

chmod +x /data/cert/*

cd /opt/harbor/

./prepare

./install.sh

在本地使用火狐浏览器访问:https://20.0.0.74

添加例外 -> 确认安全例外

用户名:admin

密码:123456

Node2

mkdir -p /etc/docker/certs.d/hub.test.com/

Harbor操作

scp -r data/ root@20.0.0.72:/

映射

vim /lib/systemd/system/docker.service

##修改

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=hub.test.com

systemctl daemon-reload

systemctl restart docker

登录

docker login -u admin -p 123456 https://hub.test.com

测试是否成功

docker pull nginx

docker tag nginx:latest hub.test.com/library/nginx:v1

docker push hub.test.com/library/nginx:v1

Node3也是同样的操作

mkdir -p /etc/docker/certs.d/hub.test.com/

scp -r data/ root@20.0.0.73:/

mkdir -p /etc/docker/certs.d/hub.test.com/

cd /data/cert/

cp server.crt  server.csr  server.key /etc/docker/certs.d/hub.test.com/

cd /etc/docker/certs.d/hub.test.com/

vim /etc/hosts

vim /lib/systemd/system/docker.service

#添加

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=hub.test.com

systemctl daemon-reload

systemctl restart docker

docker login -u admin -p 123456 https://hub.test.com

演示从仓库拉取镜像

kubectl create deployment nginx --image=hub.test.com/library/nginx:v1 --replicas=3

拉取失败

kubectl get pods

把harbor权限改为公开

即可成功

基于deployments,创建的无法通过delete删除,必须要先删除deployments.apps,如上图所示

绑定到集群,#获取token值

创建用户,获取token

浏览器登录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机系列】DS18B20温度传感器扩展实验之设计一个智能温控系统

本文是关于DS18B20温度传感器的一个扩展实验。 文章目录 一、相关元件介绍二、实验分析三、proteus原理图设计四、软件设计 本扩展实验实现的功能&#xff1a;利用DS18B20设计一个智能温度控制系统&#xff0c;具有温度上下限值设定。当温度高于上限值时&#xff0c;电机开启&a…

首发卡密引流系统 支持短视频点赞/关注获取卡密

搭建教程&#xff1a; 环境要求&#xff1a;Nginx、MySQL 5.6、PHP 5.6 步骤&#xff1a; 将压缩包解压至网站根目录。 打开域名/install&#xff0c;按照提示填写数据库信息进行安装。 管理后台&#xff1a; URL&#xff1a;域名/admin 账号密码&#xff1a;admin/123456 …

基于element ui封装table组件

效果图&#xff1a; 1.封装表格代码如下 <template> <div><div class"TableList"><el-tablev-loading"loading"selection-change"selectionChange"class"table":data"tableData":border"hasBorde…

综合服务IntServ,资源预留协议RSVP以及区分服务DiffServ

目录 1.IntServ 2.IntServ/RSVP 3.区分服务&#xff08;DiffServ&#xff09; 1.区分服务的基本概念 2.PHB&#xff08;每跳行为&#xff09; 1.IntServ IntServ可对单个的应用会话提供服务质量的保证&#xff0c;其主要特点: (1)资源预留。一个路由器需要知道给不断出现…

使用Microsoft托管密钥的Azure信息保护云退出

由于各种原因&#xff0c;一些组织需要一个明确定义的流程来停止使用 Azure 信息保护以及对云服务的任何依赖&#xff0c;而不会在采用之前失去对其数据的访问权限 - 以便在出现需要时做好准备。 Azure 信息保护 (AIP) 为使用自带密钥 (BYOK) 的客户和使用 Microsoft 托管密钥…

[玩转AIGC]LLaMA2之如何跑llama2.c的chat模式

前言&#xff1a;之前我们关于llama2的相关内容主要停留在gc层面&#xff0c;没介绍chat模式&#xff0c;本文将简单介绍下llama2.c的chat模式如何跑起来。训练就算了&#xff0c;没卡训练不起来的&#xff0c;但是用CPU来对别人训练好的模型进行推理还是绰绰有余的&#xff0c…

鸿蒙Harmony(十一)Stage模型

Stage模型&#xff1a;HarmonyOS 3.1 Developer Preview版本开始新增的模型&#xff0c;是目前主推且会长期演进的模型。在该模型中&#xff0c;由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”&#xff0c;因此称这种应用模型为Stage模型。 UIAb…

键盘字符(#键)显示错误

当屏幕上显示的键与键盘上按下的键不同时&#xff0c;尤其是 # 键。大多数情况下&#xff0c;此错误是由于 raspbian 和 NOOBS 软件的默认英国键盘配置所致。 解决方案&#xff1a; 要解决此问题&#xff0c;您需要将配置更改为您自己的键盘或语言的配置。这可以通过转到树莓派…

65.乐理基础-打拍子-前附点、后附点

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;前八后十六、前十六后八拍子-CSDN博客 前附点指的是一个附点八分音符加一个十六分音符的节奏型&#xff0c;如图1。 后附点指的是一个十六分音符加一个附点八分音符的节奏型&#xff0c;如图2。 前附点、后附点这两…

Java开发框架和中间件面试题(10)

目录 104.怎么保证缓存和数据库数据的一致性&#xff1f; 105.什么是缓存穿透&#xff0c;什么是缓存雪崩&#xff1f;怎么解决&#xff1f; 106.如何对数据库进行优化&#xff1f; 107.使用索引时有哪些原则&#xff1f; 108.存储过程如何进行优化&#xff1f; 109.说说…

大厂前端面试题总结(百度、字节跳动、腾讯、小米.....),附上热乎面试经验!

先简单介绍下自己&#xff0c;我“平平无奇小天才”一枚&#xff0c;毕业于南方普通985普通学生&#xff0c;有幸去百度、字节面试&#xff0c;感觉大公司就是不一样&#xff0c;印象最深的是字节&#xff0c;所以有必要总结一下面试经验&#xff0c;以及面试中遇到的一些问题&…

QT应用篇 三、QML自定义显示SpinBox的加减按键图片及显示值效果

QT应用篇 一、QT上位机串口编程 二、QML用Image组件实现Progress Bar 的效果 三、QML自定义显示SpinBox的加减按键图片及显示值效果 文章目录 QT应用篇前言一、qml需求二、使用组件1.SpinBox组件2.SpinBox中QML的使用 总结 前言 记录自己学习QML的一些小技巧方便日后查找 QT的…

unity学习笔记----游戏练习02

一、阳光值的展示和消耗 1.创建一个文本组件用于显示阳光的数值&#xff0c;然后在脚本中得到这个UI。 在SunManger中得到这个组件的引用 public TextMeshProUGUI sunPointText; 写一个用于更新显示的方法 public void UpdataSunPointText() { sunPointText.tex…

多模态大模型-CogVLm 论文阅读笔记

多模态大模型-CogVLm 论文阅读笔记 COGVLM: VISUAL EXPERT FOR LARGE LANGUAGEMODELS 论文地址 :https://arxiv.org/pdf/2311.03079.pdfcode地址 : https://github.com/THUDM/CogVLM时间 : 2023-11机构 : zhipuai,tsinghua关键词: visual language model效果:&#xff08;2023…

小型企业成为网络犯罪分子获取数据的目标

在过去十年的大部分时间里&#xff0c;网络犯罪的巨额资金来自针对大型组织的勒索软件攻击。这种威胁仍然存在。但犯罪分子可能会将注意力转向中小企业 (SMB)。这对消费者的影响将是巨大的。 将软件即服务 (SaaS) 技术用于核心业务功能继续将中小企业整合到全球供应链中。由于…

鸿蒙APP的代码规范

鸿蒙APP的代码规范是为了确保代码质量、可读性和可维护性而定义的一系列规则和标准。以下是一些建议的鸿蒙APP代码规范&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 代码风格&#xff1a; 采用…

【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(4)-自制数据集及训练(使用makesense标注数据集)

如何制作和训练自己的数据集 看yolov5官网创建数据集1.搜索需要的图片2.创建标签标注数据集地址&#xff1a;放入图片后选择目标检测创建文档&#xff0c;每个标签写在单独的一行上传结果此处可以编辑类别把车框选选择类别即可导出数据 3.新建一个目录放数据写yaml文件 4. 测试…

安装Node修改Node镜像地址搭建Vue脚手架创建Vue项目

1、安装VSCode和Node 下载VSCode Visual Studio Code - Code Editing. Redefined 下载Node Node.js (nodejs.org) 检验是否安装成功&#xff0c;WinR,输入cmd命令&#xff0c;使用node -v可以查看到其版本号 2、修改镜像地址 安装好node之后&#xff0c;开始修改镜像地址 …

【Unity动画系统】Unity动画系统Animation详解,参数细节你是否弄清?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

蓝牙物联网智能安防系统设计方案

1概述 安防系统(安全防护)的作用是预防损失&#xff0c;是人们保障人身和财产安全最重要的工具之一。近年来&#xff0c;伴随经济的飞速发展和城市人口的急剧增加&#xff0c;盗窃、入室抢劫等事件的增多给人们的安定生活带来了很大的影响&#xff0c;同时&#xff0c;交通的快…