Kubernetes/K8s集群1.23.6搭建

1 集群规划

HostnameIP角色
centos702192.168.131.102master
centos704192.168.131.104node
centos705192.168.131.105node

2 安装步骤

初始操作和安装基础软件每个节点都要执行。

2.1 初始操作

2.1.1 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2.1.2 关闭 SELinux
# 永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 临时
setenforce 0
2.1.3 关闭 swap
# 临时
swapoff -a
# 永久
sed -ri 's/.*swap.*/#&/' /etc/fstab

关闭swap后需要重启

2.1.4 设置主机名
hostnamectl set-hostname <hostname>
2.1.5 添加 hosts
cat >> /etc/hosts << EOF
192.168.131.102 centos702
192.168.131.104 centos704
192.168.131.105 centos705
EOF
2.1.6 将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF# 使配置生效
sysctl --system
2.1.7 时间同步
yum install ntpdate -y
ntpdate time.windows.com

2.2 安装基础软件

2.2.1 Docker

https://blog.csdn.net/weixin_43724577/article/details/139773553

修改Docker配置文件

vim /etc/docker/daemon.json

增加一个新的配置,关闭cgroup

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

重启Docker kubelet

systemctl daemon-reload
systemctl restart docker
2.2.2 添加阿里云 K8s yum 源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
2.2.3 安装 kubelet kubeadm kubectl
yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
systemctl enable kubelet

查看kubelet状态

systemctl status kubelet

报错

● kubelet.service - kubelet: The Kubernetes Node AgentLoaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)Drop-In: /usr/lib/systemd/system/kubelet.service.d└─10-kubeadm.confActive: activating (auto-restart) (Result: exit-code) since Thu 2024-08-08 14:53:04 CST; 1s agoDocs: https://kubernetes.io/docs/Process: 2245 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=1/FAILURE)Main PID: 2245 (code=exited, status=1/FAILURE)Aug 08 14:53:04 centos702 systemd[1]: Unit kubelet.service entered failed state.
Aug 08 14:53:04 centos702 systemd[1]: kubelet.service failed.

查看日志

journalctl -xefu kubelet
Aug 08 14:55:27 centos702 kubelet[2347]: E0808 14:55:27.692085    2347 server.go:205] "Failed to load kubelet config file" err="failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file \"/var/lib/kubelet/config.yaml\", error: open /var/lib/kubelet/config.yaml: no such file or directory" path="/var/lib/kubelet/config.yaml"

这个是因为没初始化,所以没有这个文件/var/lib/kubelet/config.yaml 执行后面的初始化就好了。

在执行初始化之后,再次查看kubelet日志

Aug 08 15:44:36 centos702 kubelet[5549]: E0808 15:44:36.264239    5549 server.go:302] "Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\""

查看Docker的Cgroup Driver

docker info | grep "Cgroup Driver"

修改Docker配置文件

vim /etc/docker/daemon.json

增加一个新的配置

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

重启Docker kubelet

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

重置kubeadm

kubeadm reset

2.3 部署 Master

在Master节点执行

kubeadm init \
--apiserver-advertise-address=192.168.131.102 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.233.0.0/16

如下信息提示初始化成功,仔细看,里面说了如何配置config,如何加入node。

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.131.102:6443 --token 1xuyt0.tdrx369a2vtjwq4o \--discovery-token-ca-cert-hash sha256:0fe1a9ed96e0c28c7b8e4fa84ca9883d6e5d5c5f5a519df1e988831a4361ac7a

之后复制配置文件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes

2.4 加入 Node

在node节点执行之前初始化master成功后的提示信息

kubeadm join 192.168.131.102:6443 --token 1xuyt0.tdrx369a2vtjwq4o \--discovery-token-ca-cert-hash sha256:0fe1a9ed96e0c28c7b8e4fa84ca9883d6e5d5c5f5a519df1e988831a4361ac7a
# 如果token不小心清空了,可通过如下命令获取
kubeadm token create --print-join-command

去master查看nodes

kubectl get nodes
kubectl get componentstatus
kubectl get pods -n kube-system

2.5 部署 CNI 网络插件

在master节点上执行

# 下载 calico 配置文件,可能会超时
mkdir /opt/k8s
cd /opt/k8scurl https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml -O# 修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改为与master初始化cidr相同 2.3中的 --pod-network-cidr=10.233.0.0/16# 找到 calico.yaml 所有的镜像
grep image calico.yaml
sed -i 's#docker.io/##g' calico.yaml# 构建
kubectl apply -f calico.yamlkubectl get po -n kube-systemkubectl describe po calico-kube-controllers-cd8566cf-hjjzm -n kube-systemkubectl get nodes

2.6 测试 kubernetes 集群

# 创建部署
kubectl create deployment nginx --image=nginx# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort# 查看 pod 以及服务信息
kubectl get pod,svc
[root@centos702 ~]# kubectl get pod,svc
NAME                         READY   STATUS      RESTARTS   AGE
pod/nginx-85b98978db-rq5gm   0/1     Completed   0          45hNAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        5d22h
service/nginx        NodePort    10.107.196.178   <none>        80:30435/TCP   45h
# 测试
curl 192.168.131.102 30435

浏览器打开http://192.168.131.102:30435/ 和 http://192.168.131.104:30435/

在这里插入图片描述

2.7 在任意节点使用 kubectl

在 master 拷贝 conf 文件

scp /etc/kubernetes/admin.conf root@192.168.131.104:/etc/kubernetes/

在 node 配置环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

3 kubectl 命令

官方文档:

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

–help

3.1 资源操作

创建对象

kubectl create -f manifest.yaml
kubectl create -f ./dir
kubectl create -f https://git.io/vPieo
kubectl run nginx --image=nginx

scale 资源

kubectl scale --replicas=3 rs/foo
kubectl scale --replicas=3 -f foo.yaml
kubectl scale --curent-replicas=2 --replicas=3 deployment/
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
[root@centos702 .kube]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-85b98978db-lgdgn   1/1     Running   0          84m
[root@centos702 .kube]# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           46h
[root@centos702 .kube]# kubectl scale deploy --replicas=2 nginx
deployment.apps/nginx scaled
[root@centos702 .kube]# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/2     2            2           46h
[root@centos702 .kube]# kubectl get po -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP              NODE        NOMINATED NODE   READINESS GATES
nginx-85b98978db-25b8q   1/1     Running   0          59s   10.233.215.16   centos704   <none>           <none>
nginx-85b98978db-lgdgn   1/1     Running   0          87m   10.233.215.15   centos704   <none>           <none>

命名空间

kubectl get ns

deployment

kubectl get deploy

3.2 资源类型的别名

pods po

deployments deploy

services svc

namespace ns

nodes no

3.3 格式化输出

# 获取deployment的信息,输出为yaml文件
kubectl get deploy nginx -o yaml

4 API

官方文档:

https://kubernetes.io/zh-cn/docs/reference/using-api/

4.1 类型

Alpha Beta Stable

4.2 废弃 API 说明

https://kubernetes.io/docs/reference/using-api/deprecation-guide/

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

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

相关文章

Science Robotics 受鳞片启发的可编程机器人结构,可同时进行形状变形和刚度变化

一、前言速览 生物有机体通常凭借复杂的结构表现出显著的多功能性&#xff0c;例如章鱼具有可以同时改变形状和刚度的能力。现有的仿生软体机器人要想实现这样的能力&#xff0c;往往需要繁琐的结构和复杂的控制系统。为此&#xff0c;来自新加坡南洋理工大学的研究人员从覆盖…

ARM高性能计算(HPC)处理器Neoverse介绍

思考: Neoverse系列中的N、V、E有什么区别? 这三个字母的缩写又是什么? ARM Neoverse架构是ARM专为服务器、数据中心、高性能计算(HPC)和网络基础设施设计的一系列处理器架构。Neoverse架构分为N系列、V系列和E系列,这些系列面向不同的应用场景,各自有不同的设计目标和…

44 个 React 前端面试问题

1.你知道哪些React hooks&#xff1f; useState&#xff1a;用于管理功能组件中的状态。useEffect&#xff1a;用于在功能组件中执行副作用&#xff0c;例如获取数据或订阅事件。useContext&#xff1a;用于访问功能组件内的 React 上下文的值。useRef&#xff1a;用于创建对跨…

人工智能新纪元

人类社会正式从信息科技时代步入了人工智能时代&#xff0c;相比信息科技革命&#xff0c;人工智能科技革命的影响要深远的多&#xff0c;在这新旧交替剧烈变革期&#xff0c;绝大多数人都有机会。 为了更好的理解人工智能科技革命&#xff0c;首先我们首先梳理一下技术的发展…

全网最最最详细的haproxy详解!!!

1 什么是负载均衡 负载均衡&#xff08;Load Balancing&#xff09;是一种将网络请求或工作负载分散到多个服务器或计算机资源上的技术&#xff0c;以实现优化资源使用、提高系统吞吐量、增强数据冗余和故障容错能力、以及减少响应时间的目的。在分布式系统、云计算环境、Web服…

ArkUI---Swiper、Grid、List组件简单介绍

前言&#xff1a;ForEach ForEach语法如下&#xff1a; ForEach(arr: Array,itemGenerator: (item: Array, index?: number) > void,keyGenerator?: (item: Array, index?: number) : string > string ) 参数1&#xff1a;数据源&#xff0c;为Array的数组 参数2&am…

KOLA: CAREFULLY BENCHMARKING WORLD KNOWLEDGE OF LARGE LANGUAGE MODELS

文章目录 题目摘要简介KOLA 基准实验评估结论和未来工作道德声明 题目 KOLA&#xff1a;仔细对大型语言模型的世界知识进行基准测试 论文地址:https://arxiv.org/abs/2306.09296 项目地址:https://github.com/ranahaani/GNews 摘要 大型语言模型 (LLM) 的卓越性能要求评估方法…

Grok-2的Beta版发布

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

图论------Bellman-Ford算法求单源最短路径的优化

目录 前情回顾&#xff1a; 画图分析&#xff1a; 具体代码&#xff1a; 前情回顾&#xff1a; 大家是否还记得我们之前讲过的Bellman-Ford算法&#xff0c;如果忘记的话可以点击链接去复习一下&#xff1a;图论------贝尔曼-福德&#xff08;Bellman-Ford&#xff09;算法-…

8月13日学习笔记 LVS

一.描述以及工作原理 1. 什么是LVS linux virtural server的简称&#xff0c;也就是linxu虚拟机服务器&#xff0c;这是一个 由章文嵩博士发起的开源项目&#xff0c;官网是 http://www.linuxvirtualserver.org,现在lvs已经是linux内核标 准的一部分&#xff0c;使用lvs可以达…

杭州网络安全等保测评——数据守护者的金盾牌️

在数字化转型疾驰的杭州&#xff0c;网络疆域的每一次拓展都伴随着安全风险的增长。如何在创新与安全之间找到黄金平衡点&#xff1f;《杭州等保测评&#xff1a;守护网络安全的坚实屏障》一文&#xff0c;深入探索这座智慧城市如何依托等保测评体系&#xff0c;构建起一道道安…

【已EI检索会议】第五届新材料与清洁能源国际学术会议(ICAMCE 2024)

重要信息 会议官网&#xff1a;2024.icceam.com 接受/拒稿通知&#xff1a;投稿后1周内 收录检索&#xff1a;EI, Scopus 会议召开视频 见刊封面 EI检索页面 Scopus 检索页面 相关会议 第六届新材料与清洁能源国际学术会议&#xff08;ICAMCE 2025&#xff09; 大会官网&…

机器学习常用包numpy篇(二)数组属性与基本操作

目录 前言 数组属性 1.数组转置 2.数组元素的数据类型 3.数组元素的虚部 4.数组元素的实部 5.数组包含的元素个数 6.数组元素的字节数 7.数组元素的总字节 8.数组维度 9.数组形状 10.每个维度中步进的字节数组 11.数组维度和形状 数组基本操作 1.重设形状 2.数…

【vue3|第23期】Vite + Vue3: 深入理解public和assets文件夹的作用与使用

日期&#xff1a;2024年8月14日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

GBJ406-ASEMI无人机专用GBJ406

编辑&#xff1a;ll GBJ406-ASEMI无人机专用GBJ406 型号&#xff1a;GBJ406 品牌&#xff1a;ASEMI 封装&#xff1a;GBJ-4 批号&#xff1a;2024 现货&#xff1a;50000 最大重复峰值反向电压&#xff1a;600V 最大正向平均整流电流(Vdss)&#xff1a;4A 功率(Pd)&am…

“从零开始的HTML 表格”——WEB开发系列09

HTML 表格是一种用于在网页上组织和显示信息的结构性元素&#xff0c;它能够将数据以行和列的形式呈现&#xff0c;帮助用户更清晰地理解数据关系。表格在展示统计数据、产品列表、日程安排等方面非常实用。 一、HTML 表格的基本结构 HTML 表格用 ​​<table>​​ 标签来…

day36——homework

二、基于UDP的TFTP文件传输 1&#xff09;tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&am…

MySQL源码安装与MySQL基础学习

1、安装MySQL ​ 本次安装使用的是绿色硬盘版本&#xff0c;无需额外安装依赖环境&#xff0c;比较简单 修改相关配置文件&#xff1a; 设置环境变量&#xff0c;声明/宣告MySQL命令便于系统识别&#xff1a; 初始化数据库&#xff1a; 设置系统识别&#xff0c;进行操作&…

Java基础之隐式类型转换

类型转换 基本数据类型表示范围大小排序&#xff1a; 在变量赋值及算术运算的过程中&#xff0c;经常会用到数据类型转换&#xff0c;其分为两类&#xff1a; 隐式类型转换 显式类型转换 1 隐式类型转换 情形1&#xff1a;赋值过程中&#xff0c;小数据类型值或变量可以直…

八股文学习总结

八股文学习总结 文章目录 八股文学习总结一、总体概况二、Java基础三、集合四、JUC五、JVM六、MYSQL七、Redis八、MQ九、计网十、OS十一、附上我记的笔记 一、总体概况 八股文也看了好多天了&#xff0c;我对八股文基本上考察哪些点也都有了印象&#xff0c;主要的分为Java基础…