k8s的二进制部署(一)

k8s的二进制部署:源码包部署

环境:

k8smaster01:  20.0.0.71  kube-apiserver kube-controller-manager kube-schedule ETCD

k8smaster02:  20.0.0.72  kube-apiserver kube-controller-manager kube-schedule

Node节点01: 20.0.0.73 kubelet kube-proxy ETCD

Node节点01: 20.0.0.74 kubelet kube-proxy ETCD

负载均衡:nginx+keepalived:

master:20.0.0.75  backup:20.0.0.0.76

ETCD:20.0.0.71

              20.0.0.73

              20.0.0.74

开始实验:

所有 :master01 node 1,2

systemctl stop firewalld

setenforce 0

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

swapoff -a

###

swapoff -a

k8s在设计时,为了提升性能,默认是不使用swap分区,kubenetes在初始化时,会检测swap是否关闭

##

master1:

hostnamectl set-hostname master01

node1:

hostnamectl set-hostname node01

node2:

hostnamectl set-hostname node02

所有

vim /etc/hosts

20.0.0.71 master01

20.0.0.72 node01

20.0.0.73 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

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce docker-ce-cli containerd.io

systemctl start docker.service

systemctl enable docker.service

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'

{

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

}

EOF

systemctl daemon-reload

systemctl restart docker

部署第一个组件:

存储k8s的集群信息和用户配置组件:etcd

etcd是一个高可用---分布式的键值对存储数据库

采用raft算法保证节点的信息一致性,etcd是用go语言写的

etcd的端口:2379:api接口 对外为客户端提供通讯

2380:内存服务的通信端口

etcd一般都是集群部署,etcd也有选举leader的机制,至少要3台,或者奇数台

k8s的内部通信依靠证书认证,密钥认证:证书的签发环境

关闭全部操作

master01:

cd /opt

投进来三个证书

mv cfssl cfssl-certinfo cfssljson /usr/local/bin

chmod 777 /usr/local/bin/cfssl*

##

cfssl:证书签发的命令工具

cdssl-certinfo:查看证书信息的工具

cfssljson:把证书的格式转化为json格式,变成文件的承载式证书

##

cd /opt

mkdir k8s

cd k8s

把两个证书投进去:

vim etcd-cert.sh

vim etcd.sh

q!

chmod 777 etcd-cert.sh etcd.sh

mkdir /opt/k8s/etcd-cert

mv etcd-cert.sh etcd-cert/

cd /opt/k8s/etcd-cert/

./etcd-cert.sh

Ls

##

ca-config.json  ca-csr.json  ca.pem        server.csr       server-key.pem

ca.csr          ca-key.pem   etcd-cert.sh  server-csr.json  server.pem

解析:

ca-config.json: 证书颁发的配置文件,定义了证书生成的策略,默认的过期时间和模版

ca-csr.json: 签名的请求文件,包括一些组织信息和加密方式

ca.pem 根证书文件,用于给其他组件签发证书

server.csr etcd的服务器签发证书的请求文件

server-key.pem etcd服务器的私钥文件

ca.csr 根证书签发请求文件

ca-key.pem   根证书私钥文件

server-csr.json 用于生成etcd的服务器证书和私钥签名文件

server.pem etcd服务器证书文件,用于加密和认证 etcd 节点之间的通信。

###

cd /opt/k8s/

把  etcd-v3.4.9-linux-amd64.tar.gz 拖进去

tar zxvf etcd-v3.4.9-linux-amd64.tar.gz

ls etcd-v3.4.9-linux-amd64

mkdir -p /opt/etcd/{cfg,bin,ssl}

cd etcd-v3.4.9-linux-amd64

mv etcd etcdctl /opt/etcd/bin/

cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/

cd /opt/k8s/

./etcd.sh etcd01 20.0.0.71 etcd02=https://20.0.0.72:2380,etcd03=https://20.0.0.73:2380

开一台master1终端

scp -r /opt/etcd/ root@20.0.0.72:/opt/

scp -r /opt/etcd/ root@20.0.0.73:/opt/

scp /usr/lib/systemd/system/etcd.service root@20.0.0.72:/usr/lib/systemd/system/

scp /usr/lib/systemd/system/etcd.service root@20.0.0.73:/usr/lib/systemd/system/

node1:

vim /opt/etcd/cfg/etcd

node2:

vim /opt/etcd/cfg/etcd

一个一个起(谁先启谁就是主节点)

从master01开始

systemctl start etcd

systemctl enable etcd

systemctl status etcd

master:

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://20.0.0.71:2379,https://20.0.0.72:2379,https://20.0.0.73:2379" endpoint health --write-out=table

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://20.0.0.71:2379,https://20.0.0.72:2379,https://20.0.0.73:2379" --write-out=table member list

master01:

#上传 master.zip 和 k8s-cert.sh 到 /opt/k8s 目录中,解压 master.zip 压缩包

cd /opt/k8s/

vim k8s-cert.sh

unzip master.zip

chmod 777 *.sh

vim controller-manager.sh

vim scheduler.sh

vim admin.sh

##

#创建kubernetes工作目录

mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}

mkdir /opt/k8s/k8s-cert

mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert

cd /opt/k8s/k8s-cert/

./k8s-cert.sh

Ls

cp ca*pem apiserver*pem /opt/kubernetes/ssl/

cd  /opt/kubernetes/ssl/

Ls

cd /opt/k8s/

把 kubernetes-server-linux-amd64.tar.gz 拖进去

tar zxvf kubernetes-server-linux-amd64.tar.gz

cd /opt/k8s/kubernetes/server/bin

cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/

ln -s /opt/kubernetes/bin/* /usr/local/bin/

kubectl get node

kubectl get cs

cd /opt/k8s/

vim token.sh

#!/bin/bash

#获取随机数前16个字节内容,以十六进制格式输出,并删除其中空格

BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')

#生成 token.csv 文件,按照 Token序列号,用户名,UID,用户组 的格式生成

cat > /opt/kubernetes/cfg/token.csv <<EOF

${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"

EOF

chmod 777 token.sh

./token.sh

cat /opt/kubernetes/cfg/token.csv

cd /opt/k8s/

./apiserver.sh 20.0.0.71 https://20.0.0.71:2379,https://20.0.0.72:2379,https://20.0.0.73:2379

netstat -natp | grep 6443

cd /opt/k8s/

./scheduler.sh

ps aux | grep kube-scheduler

./controller-manager.sh

ps aux | grep kube-controller-manager

./admin.sh

kubectl get cs

kubectl version

kubectl api-resources

vim /etc/profile

G

o

source < (kubectl completion bash)

source /etc/profile

Master1操作完毕,接下来操作node1,2

所有 node 节点上操作 node1,2:

mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}

cd /opt

 node.zip 到 /opt 目录中

unzip node.zip

chmod 777 kubelet.sh proxy.sh

关闭同步操作:

master01:

cd /opt/k8s/kubernetes/server/bin

scp kubelet kube-proxy root@20.0.0.72:/opt/kubernetes/bin/

scp kubelet kube-proxy root@20.0.0.73:/opt/kubernetes/bin/

master 01:

mkdir -p /opt/k8s/kubeconfig

cd /opt/k8s/kubeconfig

把kubeconfig.sh 拖进去

chmod 777 kubeconfig.sh

./kubeconfig.sh 20.0.0.71 /opt/k8s/k8s-cert/

scp bootstrap.kubeconfig kube-proxy.kubeconfig root@20.0.0.72:/opt/kubernetes/cfg/

scp bootstrap.kubeconfig kube-proxy.kubeconfig root@20.0.0.73:/opt/kubernetes/cfg/

node1,2:

cd /opt/kubernetes/cfg/

ls

master01:

kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap

#RBAC授权,使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书,通过CSR加密认证实现INIDE节点加入到集群当中,kubelet获取master的验证信息和获取API的验证

kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

node1:

cd /opt/

chmod 777 kubelet.sh

./kubelet.sh 20.0.0.72

master01:

kubectl get cs

kubectl get csr

NAME                                                   AGE  SIGNERNAME                                    REQUESTOR           CONDITION

node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE   12s  kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Pending

kubectl certificate approve node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE

##上面的密钥对

kubectl get csr

NAME                                                   AGE  SIGNERNAME                                    REQUESTOR           CONDITION

node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE   2m5s kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Approved,Issued

##必须是Approved,Issued 才成功

node2:

cd /opt/

chmod 777 kubelet.sh

./kubelet.sh 20.0.0.73

master01:

kubectl get cs

kubectl get csr

NAME                                                   AGE  SIGNERNAME                                    REQUESTOR           CONDITION

node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE   12s  kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Pending

kubectl certificate approve node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE

##上面的密钥对

kubectl get csr

NAME                                                   AGE  SIGNERNAME                                    REQUESTOR           CONDITION

node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE   2m5s kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Approved,Issued

##必须是Approved,Issued 才成功

master01:

kubectl get node

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

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

相关文章

Vue学习之第一、二章——Vue核心与组件化编程

第一章. Vue核心 1.1 Vue简介 1.1.1 官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ 1.1.2 Vue特点 遵循 MVVM 模式编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发它本身只关注 UI, 也可以引入其它第三方库开发项目 1.2 初始Vue 这里可以参考&a…

如何在vscode当中预览html文件运行结果

如何在vscode当中预览html文件运行结果 下载拓展内容打开拓展界面下载拓展 运行html文件参考内容 上一篇文章当中讲了如何实现在网页上对html文件的预览,但是这样子其实在运行代码的过程当中效果比较差,那么还需要可以实时预览运行的结果 下载拓展内容 打开拓展界面 下载拓展 …

Springboot整合MVC进阶篇

一、概述 1.1SpringBoot整合SpringMVC配置 SpringBoot对SpringMVC的配置主要包括以下几个方面&#xff1a; 自动配置&#xff1a;SpringBoot会自动配置一个嵌入式的Servlet容器&#xff08;如Tomcat&#xff09;&#xff0c;并为我们提供默认的SpringMVC配置。这样我们无需手动…

华清远见嵌入式学习——ARM——作业3

作业要求&#xff1a; 代码效果图&#xff1a; 代码&#xff1a; led.h #ifndef __LED_H__ #define __LED_H__#define RCC_GPIO (*(unsigned int *)0x50000a28) #define GPIOE_MODER (*(unsigned int *)0x50006000) #define GPIOF_MODER (*(unsigned int *)0x50007000) #defi…

12.26代码复现

# 建立矩阵模型 m Model(specification) x m.addMVar((48,),vtypeGRB.BINARY,namex) y m.addMVar((240,),lb-GRB.INFINITY,namey) u m.addMVar((48,),vtypeGRB.BINARY,nameu)以下是一个简单的示例代码&#xff0c;演示了如何使用 Python 和 Gurobi 库来实现 KKT 方法求解列…

推荐一个vscode看着比较舒服的主题:Dark High Contrast

主题名称&#xff1a;Dark High Contrast &#xff08;意思就是&#xff0c;黑色的&#xff0c;高反差的&#xff09; 步骤&#xff1a;设置→Themes→Color Theme→Dark High Contrast 效果如下&#xff1a; 感觉这个颜色的看起来比较舒服。

【四】【C语言\动态规划】地下城游戏、按摩师、打家劫舍 II,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…

汽车项目管理

项目节点&#xff1a; MR (Management Review)——管理层评审 KO (Kick Off)——项目正式启动 SI (Strategy Intent)——战略意图 SC (Strategy Confirmation)——战略确认 PA (Program Approval)——项目批准 PR (Product Readiness)——产品就绪 VP (Verification Prototype)…

00-Git 应用

Git 应用 一、Git概述 1.1 什么是Git git 是一个代码协同管理工具&#xff0c;也称之为代码版本控制工具&#xff0c;代码版本控制或管理的工具用的最多的&#xff1a; svn、 git。 SVN 是采用的 同步机制&#xff0c;即本地的代码版本和服务器的版本保持一致&#xff08;提…

全正版商用视频素材网站,一个字:绝

大家心心念念的全正版商用视频素材网站终于来了&#xff0c;今天给小伙伴们推荐一个我的新宠&#xff0c;已经替大家体验了一番&#xff0c;不论是设计&#xff0c;还是搜索&#xff0c;都恰到好处的合适&#xff0c;完全就是为影视人、媒体人量身打造的&#xff01; 当当当&am…

亚马逊美国站ASTM F2613儿童折叠椅和凳子强制性安全标准

ASTM F2613折叠椅和凳子安全标准 美国消费品安全委员会&#xff08;CPSC&#xff09;发布的ASTM F2613儿童折叠椅和凳子的强制性安全标准&#xff0c;已于2020年7月6日生效&#xff0c;并被纳入联邦法规《16 CFR 1232儿童折叠椅和凳子安全标准》。 亚马逊要求在美国站上架的儿…

QT小技巧 - 使用QMovie进行gif切帧

简介 使用QMovie 将 gif 进行切帧&#xff0c; magick 进行合并代码 QString gifPath "E:\\workspace\\qt\\gif2imgs\\203526qre64haq3ccoobqi.gif"; // 你的图片QMovie movie(gifPath); movie.setCacheMode(QMovie::CacheNone);qDebug() << movie.frameCou…

Python——yolov8识别车牌2.0

目录 一、前言 二、关于项目UI 2.1、修改界面内容的文本 2.2、修改界面的图标和图片 三、项目修改地方 四、其他配置问题 一、前言 因为后续有许多兄弟说摄像头卡顿&#xff0c;我在之前那个MATS上面改一下就可以了&#xff0c;MAST项目&#xff1a;基于YOLOv8的多端车流检…

Matlab/Simulink的一些功能用法笔记(3)

01--引言 最近加入到一个项目组&#xff0c;有一些测试需要去支持&#xff0c;通过了解原先团队的测试方法后&#xff0c;自己作了如下改善&#xff0c;大大提高了工作效率。这也许就是软件开发的意义吧&#xff0c;能够去除一些重复的机械的人工操作并且结果还非常不可靠。 …

ArcGIS渔网的多种用法

在ArcGIS中有一个渔网工具&#xff0c;顾名思义&#xff0c;可以用来创建包含由矩形像元所组成网络的要素类。不太起眼&#xff0c;但它的用途却有很多&#xff0c;今天跟大家分享一篇关于渔网的多种用途。 1.马赛克地图制作 2.基于网格的设施密度统计制作马赛克地图 准备材…

马萨诸塞州道路数据集预处理

今天我们将分享Massachusetts Roads遥感道路语义分割数据集,并会在下期使用FC-DenseNet进行遥感影像道路提取。 Massachusetts Roads遥感道路语义分割数据集覆盖了美国马萨诸塞州超过2600km2的面积,包含城市、城镇、农村和山区等多种地区的道路信息,图像大小均为1500像素1500像…

Duboo-入门到学废【上篇】

目录 1&#x1f95e;.什么是duboo 2&#x1f32d;.架构图 3.&#x1f37f;快速入门 4.&#x1f9c7;浅浅理解 1.什么是duboo&#x1f936;&#x1f936;&#x1f936; Dubbo是一个由阿里巴巴开发的基于Java的开源RPC框架。它提供了高性能、透明化的远程方法调用&#xff0…

亚马逊云科技 re:Invent 2023 产品体验:亚马逊云科技产品应用实践 王炸产品 Amazon Q,你的 AI 助手

意料之中 2023年9月25日&#xff0c;亚马逊宣布与 Anthropic 正式展开战略合作&#xff0c;结合双方在更安全的生成式 AI 领域的先进技术和专业知识&#xff0c;加速 Anthropic 未来基础模型的开发&#xff0c;并将其广泛提供给亚马逊云科技的客户使用。 亚马逊云科技开发者社…

嵌入式-stm32-用PWM点亮LED实现呼吸灯

一&#xff1a;知识前置 1.1、LED灯怎么才能亮&#xff1f; 答&#xff1a;LED需要低电平才能亮&#xff0c;高电平是灯灭。 1.2、LED灯为什么可以越来越亮&#xff0c;越来越暗&#xff1f; 答&#xff1a;这是用到不同占空比来实现的&#xff0c;控制LED实现呼吸灯&…

MySQL日期查询 今天、明天、本月、下月、星期、本周第一天、本周最后一天、本周七天日期

文章目录 今天日期明天日期本月第一天本月最后一天下个月第一天当前月已过几天当前月天数当前月所有日期获取星期本周第一天本周最后一天获取本周的七天日期 今天日期 select curdate()明天日期 select DATE_SUB(curdate(),INTERVAL -1 DAY) AS tomorrow本月第一天 select d…