K8S安装和部署(kubeadmin安装1主2从)

这里用kubeadmin方式进行安装部署

1. 准备三台服务器

服务器地址

节点名称

192.168.190.200

master

192.168.190.201

node1

192.168.190.202

node2

2. 主机初始化(所有主机)

2.1根据规划设置主机名

#切换到192.168.190.200
hostnamectl set-hostname  master
#切换到192.168.190.201
hostnamectl set-hostname  node1
#切换到192.168.190.202
hostnamectl set-hostname  node2

并三台主机设置主机名和IP地址的映射关系

vim /etc/hosts

172.19.3.240  k8s-master
172.19.3.241  k8s-node1
172.19.3.242  k8s-node2

2.2 时间同步 (如果服务器时间同步忽略此步骤)

#启动chronyd服务
systemctl start chronyd
systemctl enable chronyd
date 

💡 Tips:执行命令前 可以 使用 rpm -qa |grep chrony 查看系统是否已安装chrony,没有安装环境可使用 yum

install chrony 命令安装

2.3 安装docker(三台服务器均需安装)

1 安装命令工具 yum install -y yum-utils

2 切换源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3 查看版本号 3.10以上可安装 推荐centos7以上系统

4 查看可安装docker软件包

yum list docker-ce --showduplicates | sort -r

5 安装并启动docker

yum install docker-ce-20.10.21-3.el7 -y
systemctl start docker
systemctl enable docker

这里在执行 yum install docker-ce-20.10.21-3.el7 -y 命令是报错,报错内容如下

---> 软件包 docker-compose-plugin.x86_64.0.2.16.0-1.el7 将被 安装

---> 软件包 docker-scan-plugin.x86_64.0.0.23.0-3.el7 将被 安装

--> 解决依赖关系完成

错误:软件包:docker-ce-rootless-extras-23.0.1-1.el7.x86_64 (docker-ce-stable)

需要:fuse-overlayfs >= 0.7

错误:软件包:docker-ce-rootless-extras-23.0.1-1.el7.x86_64 (docker-ce-stable)

需要:slirp4netns >= 0.4

错误:软件包:containerd.io-1.6.18-3.1.el7.x86_64 (docker-ce-stable)

需要:container-selinux >= 2:2.74

错误:软件包:3:docker-ce-20.10.21-3.el7.x86_64 (docker-ce-stable)

需要:container-selinux >= 2:2.74

您可以尝试添加 --skip-broken 选项来解决该问题

您可以尝试执行:rpm -Va --nofiles --nodigest

解决错误,执行以下命令 参考RedHat7使用阿里云镜像建立元数据缓存时404解决_yum makecache aliyun 404-CSDN博客

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all

yum makecache //这里执行会报错,按下面命令继续执行

sed -i 's/\$releasever/7/' /etc/yum.repos.d/CentOS-Base.repo

sed -i 's#$basearch#x86_64#g' /etc/yum.repos.d/CentOS-Base.repo

yum clean all

yum makecache

最后执行安装和启动命令即可成功安装

yum install docker-ce-20.10.21-3.el7 -y
systemctl start docker
systemctl enable docker

查看安装版本 docker version

2.4 关闭防火墙和SELinux,并且禁用Swap(三台服务器均需操作)

### 关闭防火墙
systemctl disable --now firewalld### 关闭selinux, 让容器可以读取主机文件系统
getenforce      # 查看 
setenforce 0    # 临时关闭
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config    # 永久关闭### 关闭swap
swapoff -a      # 临时关闭swap
sed -i 's/.*swap.*/#&/' /etc/fstab    # 永久关闭swap

3. 添加网桥过滤和地址转发功能(三台服务器均需操作)

cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF#然后执行
sysctl --system   //生效命令

4. 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

5. 安装指定版本的 kubeadm,kubelet和kubectl(三台服务器均需操作)

yum install -y kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5
#设置kubelet开机自启
systemctl enable kubelet
systemctl start kubelet

查看安装版本

kubelet --version
kubeadm version
kubectl version

6. 部署Kubernetes

💡 Tips:下面的操作只需要在master节点上执行即可(初始化完成后,最后会输出一个join命令,可以先保存后边会用)

kubeadm init \--apiserver-advertise-address=172.16.2.240 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.23.5 \--service-cidr=10.1.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--ignore-preflight-errors=all#172.16.2.240为主机IP

–apiserver-advertise-address #集群通告地址(master 机器IP)

–image-repository #由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址

–kubernetes-version #K8s版本,与上面安装的一致

–service-cidr #集群内部虚拟网络,Pod统一访问入口

–pod-network-cidr #Pod网络,与下面部署的CNI网络组件yaml中保持一致

执行以上命令可能会报错,

报错解决:The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz" 

#解决上述报错,如果没有配置的所有服务器都需要配置,这里也要配置docker的国内镜像,不然镜像拉取会比较慢
# 添加以下内容
vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"]
}# 重启docker
systemctl restart docker
# 重新初始化
kubeadm reset # 先重置
# 重新执行上面的 kubeadm init

初始化成功后会输出以下信息(第11步会用到)

master上执行命令:kubeadm token create --print-join-command 重新查看join命令

7. 在master上配置kubectl命令行工具

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

8.在master节点上下载flannel网络配置文件

 wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

下边是下载的文件内容kube-flannel.yml,下载不了可以保存下边这份文件,注意修改文件中地址跟第6步中的配置的一样

  --pod-network-cidr=10.244.0.0/16 

---
kind: Namespace
apiVersion: v1
metadata:name: kube-flannellabels:pod-security.kubernetes.io/enforce: privileged
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: flannel
rules:
- apiGroups:- ""resources:- podsverbs:- get
- apiGroups:- ""resources:- nodesverbs:- get- list- watch
- apiGroups:- ""resources:- nodes/statusverbs:- patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: flannel
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: flannel
subjects:
- kind: ServiceAccountname: flannelnamespace: kube-flannel
---
apiVersion: v1
kind: ServiceAccount
metadata:name: flannelnamespace: kube-flannel
---
kind: ConfigMap
apiVersion: v1
metadata:name: kube-flannel-cfgnamespace: kube-flannellabels:tier: nodeapp: flannel
data:cni-conf.json: |{"name": "cbr0","cniVersion": "0.3.1","plugins": [{"type": "flannel","delegate": {"hairpinMode": true,"isDefaultGateway": true}},{"type": "portmap","capabilities": {"portMappings": true}}]}net-conf.json: |{"Network": "10.244.0.0/16","Backend": {"Type": "vxlan"}}
---
apiVersion: apps/v1
kind: DaemonSet
metadata:name: kube-flannel-dsnamespace: kube-flannellabels:tier: nodeapp: flannel
spec:selector:matchLabels:app: flanneltemplate:metadata:labels:tier: nodeapp: flannelspec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/osoperator: Invalues:- linuxhostNetwork: truepriorityClassName: system-node-criticaltolerations:- operator: Existseffect: NoScheduleserviceAccountName: flannelinitContainers:- name: install-cni-plugin#image: flannelcni/flannel-cni-plugin:v1.1.0 for ppc64le and mips64le (dockerhub limitations may apply)image: docker.io/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.0command:- cpargs:- -f- /flannel- /opt/cni/bin/flannelvolumeMounts:- name: cni-pluginmountPath: /opt/cni/bin- name: install-cni#image: flannelcni/flannel:v0.20.2 for ppc64le and mips64le (dockerhub limitations may apply)image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2command:- cpargs:- -f- /etc/kube-flannel/cni-conf.json- /etc/cni/net.d/10-flannel.conflistvolumeMounts:- name: cnimountPath: /etc/cni/net.d- name: flannel-cfgmountPath: /etc/kube-flannel/containers:- name: kube-flannel#image: flannelcni/flannel:v0.20.2 for ppc64le and mips64le (dockerhub limitations may apply)image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2command:- /opt/bin/flanneldargs:- --ip-masq- --kube-subnet-mgrresources:requests:cpu: "100m"memory: "50Mi"limits:cpu: "100m"memory: "50Mi"securityContext:privileged: falsecapabilities:add: ["NET_ADMIN", "NET_RAW"]env:- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: EVENT_QUEUE_DEPTHvalue: "5000"volumeMounts:- name: runmountPath: /run/flannel- name: flannel-cfgmountPath: /etc/kube-flannel/- name: xtables-lockmountPath: /run/xtables.lockvolumes:- name: runhostPath:path: /run/flannel- name: cni-pluginhostPath:path: /opt/cni/bin- name: cnihostPath:path: /etc/cni/net.d- name: flannel-cfgconfigMap:name: kube-flannel-cfg- name: xtables-lockhostPath:path: /run/xtables.locktype: FileOrCreate

9.在master节点上应用flannel网络的配置文件

kubectl apply -f kube-flannel.yml

命令执行成功输出以下信息

 10. 在node1和node2节点上拉取 quay.io/coreos/flannel:v0.11.0-amd64 的镜像

 docker pull quay.io/coreos/flannel:v0.11.0-amd64

11. 在node1和node2节点上分别执行以下命令,将这两个节点加入Kubernet

这里根据实际的来,在master上执行命令可获取 kubeadm token create --print-join-command

kubeadm join 192.168.190.200:6443 --token 7cmfxu.smm6jqlx0llsym4p --discovery-token-ca-cert-hash sha256:4af0d23c767f2a23605747963d8d0de78082bbd8147e261469b6fb75fe136a63 

如果在单节点上执行join操作时出现错误,可以加上参数 --ignore-preflight-errors=all

加入成功

这里也可能会遇到跟2.3步骤中一样的错误,操作一样,修改docker配置文件即可

It seems like the kubelet isn‘t running or healthy 报错解决

配置docker文件,在/etc/docker/daemon.json 添加以下内容

"exec-opts": [

"native.cgroupdriver=systemd"

],

重启docker

systemctl restart docker

重启kubelet (optional)

systemctl restart kubelet

再次执行命令

kubeadm join 192.168.190.200:6443 --token 7cmfxu.smm6jqlx0llsym4p --discovery-token-ca-cert-hash sha256:4af0d23c767f2a23605747963d8d0de78082bbd8147e261469b6fb75fe136a63 

 12. 在master上查看集群节点信息(安装成功)

kubectl get nodes

查看各节点详细信息

kubectl get nodes -o wide

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

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

相关文章

FastAPI+React全栈开发09 MongoDB的增删改查操作

Chapter02 Setting Up the Document Store with MongoDB 09 MongoDB querying and CRUD operations FastAPIReact全栈开发09 MongoDB的增删改查操作 After all this setting up, downloading, and installing, it is finally time to see MongoDB in action and try to get …

327京东一面

1.项目相关 2.手撕SQL 两道 3.JMeter性能测试 首先&#xff0c;进行基准测试&#xff1a; 单用户测试&#xff08;单用户循环多次得到的数据&#xff09;&#xff1b;为多用户并发执行提供参考 其次&#xff0c;进行负载测试&#xff1a; 通过逐步增加系统负载&#xff0…

大数据学习-2024/3/29-oracle使用介绍

在plsql中登录ORACLE数据。 默认用户&#xff1a; 1、sys&#xff1a; 角色&#xff1a;数据库超级管理员账户。 权限&#xff1a;具有最高的权限&#xff0c;可以执行任何操作&#xff0c;包括操作数据字典和控制文件。可以创建和删除数据库对象&#xff0c;授予和回收其他用户…

Linux系统中安装一些常用的插件备用

Linux系统中安装一些常用的插件备用 1.安装wget yum -y install wget 2.安装vim yum -y install vim-enhanced 3.更换yum源为国内的阿里云源&#xff08;选择&#xff09; 1、备份CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.…

OpenCV的安装与配置

OpenCV安装 OpenCV&#xff0c;全称Open Source Computer Vision Library&#xff0c;是一个开源的计算机视觉库&#xff0c;它包含了大量的图像处理函数和计算机视觉算法。为了更好地学习和应用OpenCV&#xff0c;首先需要将其正确地安装到我们的计算机上。以下是一份关于Ope…

代码随想录算法训练营第二十四天| 理论基础,77. 组合

题目与题解 参考资料&#xff1a;回溯法理论基础 带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 77. 组合 题目链接&#xff1a;​​​​​​​​​​​​​​77. 组合 代码随想录题解&#xff1a;77. 组合 视频讲解&#xff…

InputStreamReader类详解

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

【常见面试题】Golang中,协程数最多可以开多少个?

参考&#xff1a; Goroutine 究竟可以开多少&#xff1f; 一、先说结论&#xff1a; 能开多少个协程&#xff0c;取决于单个协程处理方法所占用的CPU和内存资源&#xff08;也就是看你计算机运行的应用程序的具体代码逻辑&#xff09;。 二、具体来说&#xff1a; 如果是C…

深入解析Windows Edge兼容性问题及其修复策略

深入解析Windows Edge兼容性问题及其修复策略 目录 深入解析Windows Edge兼容性问题及其修复策略 一、引言 二、Windows Edge浏览器概述 三、深入分析兼容性问题 四、案例研究 五、技术解决方案与最佳实践 六、数据图表与性能指标 七、编程技巧与代码示例 一、引言 随着W…

Radash一款JavaScript最新的实用工具库,Lodash的平替!

文章目录 Lodash 的痛点进入正题--Radash特点 举例几个常用的api 一说lodash应该大部分前端同学都知道吧&#xff0c;陪伴我们好多年的JavaScript工具库&#xff0c;但是自从 ES6 出现后就慢慢退出前端人的视线&#xff0c;能ES6写的代码绝对不会用Lodash&#xff0c;也不是完全…

基于STC12C5A60S2系列1T 8051单片机的一个按键长按开关机后一个按键单击长按都增加数值另一个按键单击长按都减少数值应用

基于STC12C5A60S2系列1T 8051单片机的一个按键长按开关机后一个按键单击长按都增加数值另一个按键单击长按都减少数值应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介…

深入理解Java接口:定义、使用与重要性(day13)

导语&#xff1a;Java接口是Java编程语言中的一个核心概念&#xff0c;它提供了一种定义方法但不包含方法实现的方式。接口在Java编程中扮演着重要角色&#xff0c;能够帮助我们实现代码的高内聚、低耦合&#xff0c;提高代码的复用性和可维护性。本文将详细介绍Java接口的定义…

SQL复习专题

请结合B站-技术蛋老师 视频学习 核心语法 一、增&#xff1a;数据库/表格 create create database 数据库名&#xff1b;#创建表&#xff08;列名类型&#xff09; mysql> create table eggs_record(-> id int,-> egg_name varchar(10),-> sold date-> ); 这…

Android熄屏/亮屏,旋转屏幕/横竖屏切换生命周期变化与activity销毁重建

Android熄屏/亮屏&#xff0c;旋转屏幕/横竖屏切换生命周期变化与activity销毁重建 1、熄屏/亮屏 熄屏后&#xff0c;Android生命周期走&#xff1a; onPause onStop 接着点亮Android手机屏幕&#xff0c;生命周期走&#xff1a; onRestart onStart onResume 2、旋转屏幕&…

服务器中有g++,但是查询不到,Command ‘g++‘ not found

有gcc但是查询不到g&#xff0c;gcc版本为9.5.0 (base) zyICML:~$ g -V Command g not found, but can be installed with: apt install g Please ask your administrator. 突然就出现这个问题&#xff0c;导致detectron装不上&#xff0c;现在有时间了专门研究下怎么解决 这…

阿里云8核32G服务器g8y租用优惠价格243.30元/月

阿里云8核32G服务器g8y租用优惠价格243.30元/月&#xff0c;配置云服务器g8y&#xff08;ecs.g8y.2xlarge&#xff09;8核32G、按固定带宽1M-5M、可选ESSD云盘40G起&#xff0c;优惠价格243.30元一个月&#xff0c; 阿里云服务器优惠活动 aliyunfuwuqi.com/go/aliyun 阿里云服务…

【重制版】在Android手机上安装kali Linux

前言 由于kali官方的Nethunter2的安装代码因为…无法访问&#xff0c;手头又没有一些受支持的机器3&#xff0c;所以做了这个脚本&#xff0c;供大家使用。 工具 搭载基于Android的手机TermuxVNC Viewer 安装必备软件(如已安装请忽略) 请到 https://www.hestudio.net/post…

Spring中 Bean生命周期总结

Bean生命周期从创建到销毁经历多个阶段&#xff0c;以下是这一过程的主要步骤&#xff1a; 1. 实例化Bean 首先&#xff0c;Spring容器通过构造器&#xff08;或者在某些情况下是通过工厂方法&#xff09;创建Bean的实例。 Bean的实例化主要可以通过以下三种方式进行&#x…

公安可视化分析指挥调度平台的构成要素

匠心接单中...8年前端开发和UI设计接单经验&#xff0c;完工项目1000&#xff0c;持续为友友们分享有价值、有见地的干货观点&#xff0c;有业务需求的老铁&#xff0c;欢迎关注发私信。 公安可视化分析指挥调度平台是一个集成了多种技术和功能的综合性平台&#xff0c;主要由…

面试宝典:深入分析golang 的反射(reflect)

Go 语言&#xff08;Golang&#xff09;是一门静态强类型、编译型的编程语言&#xff0c;由 Google 开发。Go 语言的反射&#xff08;Reflection&#xff09;是一个强大的特性&#xff0c;它允许程序在运行时获取类型的信息&#xff0c;并且能够操作这些类型。反射在 Go 语言中…