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.mzph.cn/news/582455.shtml

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

相关文章

ROS MoveIt!

MoveIt!是一个用于ROS的开源运动规划库&#xff0c;提供多种功能&#xff0c;包括用于运动规划的快速逆运动学分析、用于操纵的高级算法、机械手控制、动力学、控制器和运动规划。&#xff08;通过提供一个GUI来协助MoveIt!所需的各种设置&#xff0c;它允许使用RViz进行视觉反…

TCP 滑动窗口

滑动窗口&#xff08;Sliding window&#xff09;是一种流量控制技术。早期的网络通信中&#xff0c;通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况&#xff0c;同时发送数据&#xff0c;导致中间节点阻塞掉包&#xff0c;谁也发不了数据&#xff0…

RustDesk连接客户端提示key不匹配 Key Mismatch无法连接(已解决)

环境: RustDesk1.1.9 服务端docker部署 问题描述: RustDesk连接客户端提示key不匹配 Key Mismatch无法连接 解决方案: 1.docker部署RustDesk服务检查配置 networks:rustdesk-net:external: falsevolumes:hbbr:hbbs:services:hbbs:container_name: rustdesk-hbbsport…

Python入门-字符串Str

字符串 字符串 是Python中的 不可变 数据类型 1.字符串相关处理方法 大小写转换 # 大小写转换 s1HelloWorld new_s2s1.lower() print(s1,new_s2)new_s3s1.upper() print(new_s3)结果&#xff1a; D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap6\示例6-1字符…

C#高级 01.Net多线程

一.基本概念 1.什么是线程&#xff1f; 线程是操作系统中能独立运行的最小单位&#xff0c;也是程序中能并发执行的一段指令序列线程是进程的一部分&#xff0c;一个进程可以包含多个线程&#xff0c;这些线程共享进程资源进程有线程入口&#xff0c;也可以创建更多的线程 2.…

关于Zoom ZTP和AudioCodes Ltd桌面电话缺陷暴露,导致用户遭受窃听的动态情报

一、基本内容 近期SySS安全研究员发布分析报告显示&#xff0c;Zoom的零接触&#xff08;ZTP&#xff09;和AudioCodes Ltd桌面电话配置功能中发现高危漏洞&#xff0c;可以获得对设备的完全远程控制并不受限制的访问可以被武器化&#xff0c;以窃听房间或电话、通过设备并攻击…

华为鸿蒙(HarmonyOS)介绍

华为鸿蒙&#xff08;HarmonyOS&#xff09;介绍 华为鸿蒙&#xff08;HarmonyOS&#xff09;是一款由华为自主研发的操作系统&#xff0c;旨在为各种智能设备提供一种统一、高效、安全的解决方案。鸿蒙系统基于微内核架构&#xff0c;可以应用于多种类型的设备&#xff0c;鸿…

快速上手makefile自动化构建工具

makefile自动化构建工具 文章目录 makefile自动化构建工具 makefile背景 简单认识makefile 依赖关系与依赖方法 生成项目 清理项目 ACM时间 语法补充 .PHONY修饰 特殊符号替换 Makefile的推导过程 总结 前言&#xff1a; 在windows下&#xff0c;很多东西都是编译器直接帮你做…

docker学习笔记01-安装docker

1.Docker的概述 用Go语言实现的开源应用项目&#xff08;container&#xff09;&#xff1b;克服操作系统的笨重&#xff1b;快速部署&#xff1b;只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统&#xff1b;Docker通过隔离机制&#xff0c;每个容器间是互相隔离…

Kafka学习笔记1(千峰教育)

Kafka学习笔记1&#xff08;千峰教育&#xff09; 一、为什么使用消息队列1.使用同步的通信方式来解决多个服务之间的通信2.使用异步的通信方式 二、消息队列的流派1.有broker2.无broker 三、Kafka的基本知识1.Kafk2a的安装2.Kafka中的一些基本概念3.创建topic4.发送消息5.消费…

通过讯飞 API 接口用 Vue 实现实时语音转写

通过讯飞 API 接口用 Vue 实现实时语音转写 项目地址 前言 本项目中实时语音能够转写的最大时间为 60 s&#xff0c; 这个数据也是由 API 提供方给限制掉的 为什么我会需要这个点击按钮以后能够实现实时语音的转写呢&#xff0c;因为被课程所迫&#xff0c;选了这个方向就必…

百度每天20%新增代码由AI生成,Comate SaaS服务8000家客户 采纳率超40%

12月28日&#xff0c;由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023在北京召开。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰现场公布了飞桨文心五载十届最新生态成果&#xff0c;文心一言最新用户规模破1亿&#xff0c;截…

Leetcode 763 划分字母区间

题意理解&#xff1a; 要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 输入&#xff…

【头歌实训】kafka-入门篇

文章目录 第1关&#xff1a;kafka - 初体验任务描述相关知识Kafka 简述Kafka 应用场景Kafka 架构组件kafka 常用命令 编程要求测试说明答案代码 第2关&#xff1a;生产者 &#xff08;Producer &#xff09; - 简单模式任务描述相关知识Producer 简单模式Producer 的开发步骤Ka…

VS Code 运行 Python

介绍 Python&#xff1a; 是一种强大的编程语言&#xff0c;具有广泛的应用领域&#xff0c;可以用于开发 Web 应用、数据分析、人工智能、科学计算等多种领域。 VS Code&#xff1a; 是由微软开发的免费开源代码编辑器&#xff0c;可以在多个平台上运行。具有丰富的扩展功能…

每日一题--------求数字的每⼀位之和

大家好今天的每日一题又来了&#xff0c;有啥不对的请在评论区留言哦 文章目录 目录 文章目录 求数字的每⼀位之和 题⽬描述&#xff1a; 输⼊⼀个整数m&#xff0c;求这个整数m的每⼀位之和&#xff0c;并打印。 一、解题思路 我们可以通过不断获取该整数的个位数&#xff0c…

Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频

文章目录 相关链接运行环境前言计算机图形OpenCV简单使用图形读取文件读取可能会出现的问题&#xff1a;路径不对解决方案其它路径问题解决方案 图像显示保存OpenCV视频视频素材如何获取&#xff1f;简单视频读取 相关链接 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 …

python抽象基类之_subclasshook_方法

Python的鸭子特性&#xff08;duck typing&#xff09; Python中自定义的类只要实现了某种特殊的协议&#xff0c;就能赋予那种行为&#xff0c;举一个简单的例子&#xff1a; class A:def __len__(self):return 0 a A() print(len(a)) 如上所示&#xff0c;自己定义了一个类…

如何购买腾讯云的服务器(详解腾讯云服务器购买流程)

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动机&#xff0c;选择范围窄&#xff0c;但是…

YOLOv5-Lite 树莓派4B 15帧教程

【前言】 由于v5Lite仓库遗漏了不少历史问题&#xff0c;最大的问题是毕业后卷起来了&#xff0c;找不到时间更新。 上面是这篇博客的背景&#xff0c;那么先说下结论&#xff0c;使用 v5lite-e 模型&#xff0c;在 树莓派4B&#xff08;4G内存&#xff09; 上&#xff0c;有三…