Kubeadm快速安装 Kubernetes集群

1. Kubernetes简介

Kubernetes(k8s)是谷歌开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它具有以下特点:

  • 开源
  • 容器化
  • 自动部署
  • 扩展
  • 高可用

2. Kubernetes架构

Kubernetes遵循主从式架构设计,主要分为工作节点(Node)组件和控制平面组件。

2.1 控制平面组件

  • Kubernetes Master:集群的主要控制单元,用于管理工作负载并指导整个系统的通信。
  • Kube-APIServer:提供集群网关,是整个集群的控制中枢。
  • Scheduler:负责资源调度,将Pod调度到对应的主机上。
  • Controller Manager:负责维护集群的状态,如故障检测、内存垃圾回收等。
  • etcd:用于可靠的存储集群的配置数据,是一种持久性、轻量型、分布式的键值数据存储组件。

2.2 工作节点组件

  • Kubelet:在Node节点上运行,负责维护Pod的生命周期。
  • Kube-Proxy:负责为服务提供集群内部的服务发现和应用的负载均衡。
  • 容器运行时:如Docker,负责镜像管理和Pod和容器的真正运行。

3. 为什么需要Kubernetes

随着容器化项目的增多,管理容器变得越来越复杂,Kubernetes提供了以下优势:

  • 自动化部署和回滚
  • 扩缩容
  • 服务发现和负载均衡
  • 隔离环境
  • 统一配置管理

4. Kubeadm快速安装Kubernetes集群

Kubeadm是Kubernetes官方提供的集群安装工具,可以快速安装和初始化Kubernetes集群。

1.实验环境

主机名

IP地址

操作系统

主要软件

k8s-master

192.168.10.101

CentOS 7.9

Docker CE,

Kube-apiserver,

Kube-controllermanager,

Kubescheduler,

Kubelet

,Etcd,

Kube-proxy

k8s-node01

192.168.10.102

CentOS 7.9

Docker CE,

Kubectl,

Kube-proxy,

Calico

k8s-node02

192.168.10.103

CentOS 7.9

Docker CE,

Kubectl,

Kube-proxy

Calico

2.基础环境准备(三台主机都需要执行)

升级内核

# 删除现有的yum仓库配置文件
rm -rf /etc/yum.repos.d/*# 添加CentOS Base仓库
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 添加EPEL仓库
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo# 清除yum缓存
yum clean all# 更新系统
yum -y update# 升级系统
yum -y upgrade# 导入elrepo的GPG密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org# 安装elrepo仓库
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm# 启用elrepo仓库并安装最新的Linux内核
yum --enablerepo=elrepo-kernel install -y kernel-ml-devel kernel-ml# 设置默认内核启动顺序
grub2-set-default 0# 重启系统
reboot

3:部署docker环境(三台主机都需要)

可以去看这个文章01 Docker概念和部署-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/qq_51678989/article/details/142024581?spm=1001.2014.3001.5501

4:部署Kubernetes集群

(1)配置三台主机的主机名

主机一

hostnamectl set-hostname k8s-master
bash

 主机二

hostnamectl set-hostname k8s-node01
bash

主机三

hostnamectl set-hostname k8s-node02
bash

(2) 在三台主机上绑定hosts

cat <<EOF>>/etc/hosts
192.168.10.101 k8s-master
192.168.10.102 k8s-node01
192.168.10.103 k8s-node02
EOF

(3) 关闭交换分区 

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

(4) 在三台主机上安装常用软件 

yum -y install vim wget net-tools  lrzsz

(5) 配置kubarnetes的YUM源三台主机都要配置 

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpgrrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.al
EOF

(6)安装kubelet,kubeadm,kubectl

yum -y install kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0

(8)生产初始化配置文件(只在mater节点修改) 

[root@k8s-master ~]# kubeadm config print init-defaults > init-config.yaml
[root@k8s-master ~]# vim init-config.yaml apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.10.101                //端口bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockimagePullPolicy: IfNotPresentname: k8s-master                            //名字taints: null
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.23.0
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16         //增加访问地址
scheduler: {}

(9)导入镜像

链接: 百度网盘 请输入提取码 提取码: rmgq 复制这段内容后打开百度网盘手机App,操作更方便哦

(10)初始化

[root@k8s-master ~]# kubeadm init --config=init-config.yaml
kubeadm join 192.168.10.101:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:ec16f88acf12c7186e5fa237ab03615b3b2bedd212080aee087ddea1933b6942 
看见这个算初始化成功

(11) 让其他节点加入

node1
[root@k8s-node01 ~]# kubeadm join 192.168.10.101:6443 --token abcdef.0123456789abcdef \
> --discovery-token-ca-cert-hash sha256:ec16f88acf12c7186e5fa237ab03615b3b2bedd212080aee087ddea1933b6942node2
[root@k8s-node02 ~]# kubeadm join 192.168.10.101:6443 --token abcdef.0123456789abcdef \
> --discovery-token-ca-cert-hash sha256:ec16f88acf12c7186e5fa237ab03615b3b2bedd212080aee087ddea1933b6942 

(12)配置环境

[root@k8s-master ~]#  mkdir -p $HOME/.kube
[root@k8s-master ~]#  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8s-master ~]#  export KUBECONFIG=/etc/kubernetes/admin.conf

(13)导入calico.yaml包

已经下载好的

链接: 百度网盘 请输入提取码 提取码: 7a67 复制这段内容后打开百度网盘手机App,操作更方便哦

官网获取

wget https://docs.projectcalico.org/manifests/calico.yaml

(14) 部署 Calico 网络

[root@k8s-master ~]# kubectl apply -f calico.yaml 
[root@k8s-master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-64cc74d646-l2d94   1/1     Running   0          28s
kube-system   calico-node-697r4                          1/1     Running   0          28s
kube-system   calico-node-cl4n9                          1/1     Running   0          28s
kube-system   calico-node-xzgjr                          1/1     Running   0          28s
kube-system   coredns-6d8c4cb4d-9fsq7                    1/1     Running   0          11m
kube-system   coredns-6d8c4cb4d-l8wr4                    1/1     Running   0          11m
kube-system   etcd-k8s-master                            1/1     Running   0          11m
kube-system   kube-apiserver-k8s-master                  1/1     Running   0          11m
kube-system   kube-controller-manager-k8s-master         1/1     Running   0          11m
kube-system   kube-proxy-97rxx                           1/1     Running   0          9m24s
kube-system   kube-proxy-kd5fz                           1/1     Running   0          10m
kube-system   kube-proxy-t75pz                           1/1     Running   0          11m
kube-system   kube-scheduler-k8s-master                  1/1     Running   0          11m
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES                  AGE     VERSION
k8s-master   Ready    control-plane,master   12m     v1.23.0
k8s-node01   Ready    <none>                 11m     v1.23.0
k8s-node02   Ready    <none>                 9m53s   v1.23.0
[root@k8s-master ~]# 

(15)查看利用情况 

[root@k8s-master ~]# kubectl top node
error: Metrics API not available
#发现没有

(16)获取Kubernetes 的命令行工具包

链接: 百度网盘 请输入提取码 提取码: mdwc 复制这段内容后打开百度网盘手机App,操作更方便哦

(17)查询利用率

[root@k8s-master ~]# kubectl create  -f components.yaml 
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
[root@k8s-master ~]# kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   118m         5%     1443Mi          38%       
k8s-node01   65m          3%     799Mi           21%       
k8s-node02   78m          3%     1988Mi          52%       
[root@k8s-master ~]# 

(17)图形化界面

该链接提供了图形化

链接: 百度网盘 请输入提取码 提取码: vcih 复制这段内容后打开百度网盘手机App,操作更方便哦

[root@k8s-master ~]# mkdir -p /opt/k8s/dashboard                 //创建一个目录
[root@k8s-master ~]# cd /opt/k8s/dashboard/
[root@k8s-master dashboard]# rz -E                               //把链接的包拉出来
rz waiting to receive.
[root@k8s-master dashboard]# kubectl create -f .                    
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
[root@k8s-master ~]# kubectl get pod -A
NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
kube-system            calico-kube-controllers-64cc74d646-7npbs     1/1     Running   0          4m2s
kube-system            calico-node-7z94t                            1/1     Running   0          4m2s
kube-system            calico-node-b65zv                            1/1     Running   0          4m2s
kube-system            calico-node-hsgvn                            1/1     Running   0          4m2s
kube-system            coredns-6d8c4cb4d-nhttz                      1/1     Running   0          7m13s
kube-system            coredns-6d8c4cb4d-twbxs                      1/1     Running   0          7m13s
kube-system            etcd-k8s-master                              1/1     Running   0          7m28s
kube-system            kube-apiserver-k8s-master                    1/1     Running   0          7m28s
kube-system            kube-controller-manager-k8s-master           1/1     Running   0          7m28s
kube-system            kube-proxy-8qnjf                             1/1     Running   0          7m13s
kube-system            kube-proxy-m8426                             1/1     Running   0          5m41s
kube-system            kube-proxy-xjb6k                             1/1     Running   0          5m45s
kube-system            kube-scheduler-k8s-master                    1/1     Running   0          7m28s
kube-system            metrics-server-66bdc46d86-nht4z              1/1     Running   0          3m21s
kubernetes-dashboard   dashboard-metrics-scraper-7fcdff5f4c-mnnrl   1/1     Running   0          2m21s
kubernetes-dashboard   kubernetes-dashboard-df74f58f9-zjnj8         1/1     Running   0          2m21s

(18)获取token 

[root@k8s-master ~]# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard   //修改一下端口改成31245
[root@k8s-master ~]# kubectl get svc -n  kubernetes-dashboard 
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.197.81   <none>        8000/TCP        7m5s
kubernetes-dashboard        NodePort    10.110.1.207    <none>        443:31245/TCP   7m5s[root@k8s-master ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin -user | awk '{print $1}')token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjlmeExvcUp6ZFBZaUQwZXE4cXQ3U3JOZzcwU2RfVFlDVWZXN3lzWVVPMzgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJ0dGwtY29udHJvbGxlci10b2tlbi13eDI0OCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJ0dGwtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjcwODQ4ZGU2LTY1NjMtNGMwZi1iYWNhLWRlN2JmMzU4N2Q2ZCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTp0dGwtY29udHJvbGxlciJ9.akwFAPPwWS18Jb7NtyL9C7mXl6gHJWEzT_EqyND5BFJdGnP56kXJKO68MHy0KEoJboAtQE-vVlFQTBkFsNPEYJ2L-AQ6UjQObgiMPUfFTuWAu2KsqjAwQDv-THT72KTwx0N0F9KRpWZ9OHbvTsHztMrGfWMrZAHRBKEv6IBPAsL0C0OQujqE3Tx6Z7Fno8iHt5cYaanwsZV9DXw5-6WVhejMUjQMGcAMGIjiLRLqhgjC3LRguhPyakt0bgp57oa77FOK71T_b3D1kDtAOqjghbji4BagloA48odsCFBHEzl6xv3UH9glQsf9cAFCkFHr9TRQ9IYx8jIC4L7DjPZI2g

--test-type --ignore-certificate-errors在谷歌属性添加 

复制token输入浏览器中

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...

原文链接&#xff1a;https://tecdat.cn/?p37724 在当今世界&#xff0c;粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率&#xff0c;但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时&#xff0c;在学术领域&#xff0c;准确评估…

OpenAI GPT o1技术报告阅读(3)-英文阅读及理解

✨继续阅读报告&#xff1a;使用大模型来学习推理(Reason) 原文链接&#xff1a;https://openai.com/index/learning-to-reason-with-llms/ 这次我们继续看一个英文阅读理解的案例。 原问题&#xff1a; The following passage is the draft of an excerpt from a contempora…

基于OpenCV的YOLOv5图片检测

利用OpenCV的DNN模块加载onnx模型文件进行图片检测。 1、使用的yolov5工程代码&#xff0c;调用export.py导出onnx模型。 2、下载opencv版本&#xff0c;https://opencv.org/releases/ 使用opencv版本4.5.3或以上&#xff0c;本文使用的opencv4.6.0 3、使用vc20…

css设置overflow:hiden行内元素会发生偏移的现象

父级元素包含几个行内元素 <div id"box"><p><span>按钮</span><span>测试文字文字文字测试文字文字文字</span><span>看这里</span></p></div>#box p{width: 800px;font-size: 30px;}#box p span{disp…

VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 分析记录

项目场景&#xff1a; VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 问题描述 VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 原因分析&#xff1a; 虚拟机开启后会对部分文件继续加密&#xff0c;关闭时虚拟机会自动对其解密&…

css设置动态数组渲染及中间线平均分开显示

效果图&#xff1a; <template><div class"container"><div v-for"(item, index) in items" :key"index" class"item-container"><span class"item">{{ item }}</span><span v-if"in…

二级C语言2023-9易错题

1 二叉树结点数计算&#xff1a; 一棵二叉树有10个度为1的结点&#xff0c;7个度为2的结点&#xff0c;则该二叉树共有____个结点。 解&#xff1a; 2 指针&#xff1a; 有以下程序 #inctude<stdio.h> #include<stdlib.h> main() { int *a&#xff0c;*b&…

Unity数据持久化4——2进制

概述 基础知识 各类型数据转字节数据 文件操作相关 文件相关 文件流相关 文件夹相关 练习题 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using UnityEngine;public class Exercises1 : MonoBehaviour {/…

6. Python 输出长方形,直角三角形,等腰三角形

使用Python输出长方形&#xff0c;直角三角形&#xff0c;等腰三角形 这里主要使用python语言里的循环知识&#xff0c;具体说是Python语言里的循环嵌套&#xff0c; 注意&#xff0c;在实际使用中&#xff0c;循环嵌套一般最多到达3层&#xff0c;嵌套太多会影响到程序执行。…

详解ChatBI Agent架构:打造高效数据统计系统

随着人工智能技术的迅猛发展&#xff0c;智能对话系统在各行各业中的应用越来越广泛。本文将介绍一种名为ChatBI Agent的架构设计&#xff0c;并以电信运营商系统的经分数据统计Agent为案例&#xff0c;结合具体的代码实现&#xff0c;帮助读者了解这一系统的设计理念和实现方式…

新产品,推出 MLX90372GVS 第三代 Triaxis® 位置传感器 IC,适用于汽车和工业系统(MLX90372GVS-ACE-308)

Triaxis 旋转和线性位置传感器IC&#xff1a; MLX90372GVS-ACE-103 MLX90372GVS-ACE-108 MLX90372GVS-ACE-301 MLX90372GVS-ACE-200 MLX90372GVS-ACE-208 MLX90372GVS-ACE-303 MLX90372GVS-ACE-300 MLX90372GVS-ACE-350 MLX90372GVS-ACE-100 MLX90372GVS-ACE-101 MLX90372GVS-…

6.C_数据结构_查询_哈希表

概述 哈希表的查询是通过计算的方式获取数据的地址&#xff0c;而不是依次比较。在哈希表中&#xff0c;有一个键值key&#xff0c;通过一些函数转换为哈希表的索引值。 其中&#xff1a;这个函数被称为哈希函数、散列函数、杂凑函数&#xff0c;记为&#xff1a;H(key) 哈希…

使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、nvm的安装与基本使用2.1 macOS安装nvm2.1.1 使用 curl 安装2.1.2 使用 Homebrew 安装 2.2 Windows安装nvm2.2.1 下载 nvm-windows2.2.2 安装 nvm-windows 2.3 安装node2.4 切换node版本 三、常见问题及解决方案…

STM32读写内部flash

一.简介 在 STM32 芯片内部有一个 FLASH 存储器&#xff0c;它主要用于存储代码&#xff0c;我们在电脑上编写好应用程序后&#xff0c;使用下载器把编译后的代码文件烧录到该内部 FLASH 中&#xff0c;由于 FLASH 存储器的内容在掉电后不会丢失&#xff0c;芯片重新上电复位后…

【redis-01】redis基本数据类型和使用场景

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325 redis基本数据类型和使用场景 一&#xff0c;redis基本数据类型和使用场景1&#xff0c;String数据类型2&#xff0c;Hash数据类型3&#xff…

Linux top命令详解与重点内容说明

文章目录 重点说明基本信息进程(任务)信息cpu占用信息%Cpu(s)内存信息交换内存信息每列含义说明交互命令多窗口模式颜色配置命令参数 重点说明 top命令非常强大&#xff0c;也非常复杂&#xff0c;很难面面俱到&#xff0c;也没有必要&#xff0c;这篇文章的目的是介绍重点&am…

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

提示&#xff1a;C君认为的难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会…

英集芯IP5912:集成开关充电功能的低功耗8位POWER MCU芯片

英集芯IP5912是一款功能丰富的、集成了降压充电管理功能的8位MCU芯片&#xff0c;它内置了一个5V输入的同步降压充电DC-DC&#xff0c;功率管也是内置的&#xff0c;同时提供最大1.5A的充电电流。封装方式采用SOP16&#xff0c;方案应用时只需要很少的外围器件&#xff0c;就可…

【多线程】CAS的原理及应用,看这篇文章就够啦

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;多线程 / javaEE初阶 一、CAS概述 CAS&#xff08;Compare and Swap&#xff09;&#xff0c;中文译为 “比较并交换” &#xff0c;是一种无锁算法中常用的原子操作。CAS通常用于实现线程之间的同…

linux之nacos安装

1:下载nacos安装包 方式一、进入官网下载压缩包 官网地址 找到nacos-server-2.0.1.tar.gz 点击进行下载&#xff0c;下载完成后上传到服务器中。 方式二、使用wget命令下载 也有两种方式&#xff1a;第一种下载速度较慢 wget https://github.com/alibaba/nacos/releases/downl…