kubeadm安装K8S_v1.28.x容器使用docker

news2025/2/1 21:58:01

一.环境部署

1.1 基础环境配置(只有1台服务器,作为masrer,也作为node使用)

[root@ecs-cf5e ~]# cat /etc/redhat-release CentOS Linux release
7.9.2009 (Core) [root@ecs-cf5e ~]# uname -a Linux ecs-cf5e 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux [root@ecs-cf5e ~]#

1.2 修改机器名称

#永久修改主机名
hostnamectl set-hostname  master    && bash   #在master上操作

1.3 服务器性能优化

#时间同步:
yum install epel-release  -y
yum install ntpdate -y
ntpdate time.windows.com

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
swapoff -a # 临时
sed -i 's/.*swap.*/#&/' /etc/fstab # 永久

#修改内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

cat >>  /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

modprobe br_netfilter #加载br_netfilter模块
lsmod |grep br_netfilter #验证模块是否加载成功
sysctl -p /etc/sysctl.d/k8s.conf  #使刚才修改的内核参数生效

1.4 集群添加hosts和免密登录

cat >> /etc/hosts << EOF
192.168.0.143    master
EOF

ssh-keygen -t rsa #一路回车,不输入密码
###把本地的ssh公钥文件安装到远程主机对应的账户
for i in master ; do ssh-copy-id -i .ssh/id_rsa.pub $i ;done

1.5 配置ipvs功能

在kubernetes中Service有两种代理模型,一种是基于iptables的,一种是基于ipvs,两者对比ipvs的性能要高,如果想要使用ipvs模型,需要手动载入ipvs模块

yum -y install ipset ipvsadm
cat > /etc/sysconfig/modules/ipvs.modules << EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4  
EOF
chmod +x /etc/sysconfig/modules/ipvs.modules # 执行脚本
/etc/sysconfig/modules/ipvs.modules
# 验证ipvs模块
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

二.安装Docker和安装并配置cri-dockerd插件安装

2.1 安装docker

yum -y install epel-release wget lrzsz
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum list docker-ce --showduplicates | sort -r #查看yum仓库中可以安装的docker版本
#yum -y install docker-ce-18.06.1.ce-3.el7 #安装固定版本
yum -y install docker-ce  #安装docker最新版
systemctl enable docker && systemctl start docker 

cat > /etc/docker/daemon.json << EOF
{
 "registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
} 
EOF

systemctl daemon-reload && systemctl restart docker &&  systemctl status docker
docker --version

2.2 cri-dockerd

#安装cri-dockerd插件
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
#备份并更新cri-docker.service文件
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm --nodeps --force #centos9

mv /usr/lib/systemd/system/cri-docker.service   /usr/lib/systemd/system/cri-docker.service.default

#空文件复制如下信息
cat > /usr/lib/systemd/system/cri-docker.service << EOF 
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF


#启动cir-dockerd
systemctl daemon-reload
systemctl start cri-docker.service 
systemctl enable cri-docker.service
systemctl status  cri-docker.service

cri-dockerd --version

三.安装Docker/kubeadm/kubelet(所有节点)

##添加yum 源
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 clean all && yum makecache -y
#yum makecache fast
yum list kubectl --showduplicates | sort -r #列出kubectl可用的版本
##centos系统安装命令
yum -y install kubelet-1.28.2-0  kubeadm-1.28.2-0  kubectl-1.28.2-0 
systemctl enable kubelet
kubectl version
#ubuntu系统安装命令
sudo apt install kubelet=1.28.2-00  kubeadm=1.28.2-00 kubectl=1.28.2-00 -y 

四.初始化集群

#kubeadm config images list #查看集群安装需要的命令

kubeadm init --kubernetes-version v1.28.2 --apiserver-advertise-address=192.168.0.143  --service-cidr=10.96.0.0/12  --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers   --cri-socket unix:///var/run/cri-dockerd.sock  --ignore-preflight-errors=all
#kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock #这句是集群初始化失败后需要执行的
kubeadm token create --print-join-command #重新生成token
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

五.命令补全

####Centos系统
rpm -aq |grep completion  
yum -y install bash-completion  #安装补全命令的包
kubectl completion bash
source /usr/share/bash-completion/bash_completion
kubectl completion bash >/etc/profile.d/kubectl.sh
source /etc/profile.d/kubectl.sh
cat >> /root/.bashrc <<EOF
source /etc/profile.d/kubectl.sh
EOF

六.安装网络插件

#去除污点,允许master节点部署pod
kubectl taint nodes --all node-role.kubernetes.io/control-plane- #执行这句就行,就是取消污点
kubectl taint nodes --all node-role.kubernetes.io/master-  #执行这句就行,就是取消污点
kubectl apply -f calico.yaml  #从这里下载对应版 https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES           AGE     VERSION
master   Ready    control-plane   6m29s   v1.28.2
[root@master ~]# kubectl get pods -A
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-bdf96dff9-fdgj5   1/1     Running   0          2m19s
kube-system   calico-node-cz7nh                         1/1     Running   0          2m19s
kube-system   coredns-66f779496c-fm7wd                  1/1     Running   0          6m28s
kube-system   coredns-66f779496c-nhcpz                  1/1     Running   0          6m28s
kube-system   etcd-master                               1/1     Running   0          6m41s
kube-system   kube-apiserver-master                     1/1     Running   0          6m41s
kube-system   kube-controller-manager-master            1/1     Running   0          6m41s
kube-system   kube-proxy-nq95m                          1/1     Running   0          6m28s
kube-system   kube-scheduler-master                     1/1     Running   0          6m41s
[root@master ~]# 

七. 在kubernetes群集中创建Nginx

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pods,svc  #查看暴露端口

浏览器访问: 集群任何IP:端口 正常访问就OK
在这里插入图片描述

八. 部署Dashboard

kubectl apply -f recommended.yaml 
[root@master ~]# kubectl get pods,svc -n kubernetes-dashboard
NAME                                             READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-5657497c4c-jwd8h   1/1     Running   0          3m50s
pod/kubernetes-dashboard-78f87ddfc-vs7hc         1/1     Running   0          3m50s

NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
service/dashboard-metrics-scraper   ClusterIP   10.107.39.99     <none>        8000/TCP        3m50s
service/kubernetes-dashboard        NodePort    10.107.196.130   <none>        443:30001/TCP   3m50s
[root@master ~]# 
#创建service  account并绑定默认cluster-admin管理员群集角色
kubectl create serviceaccount dashboard-admin -n kube-system  #创建用户
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin #用户授权
kubectl -n kube-system get serviceaccounts |grep dashboard #查看sa是否创建成功
kubectl -n kube-system create token dashboard-admin  --duration=518400s #创建用户Token
#一年365*24*60*60=31536000s 第一次token登录后有报错,请再次执行一次token就好了 

浏览器打开ip:30001 由于我这是华为云服务器用的是公网IP https://114.115.160.33:30001/
在这里插入图片描述在这里插入图片描述在这里插入图片描述

九. 部署metrics服务

kubectl apply -f metrics-server.yaml 
kubectl top nodes 
kubectl top pods
[root@master ~]# kubectl top nodes 
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   170m         4%     2622Mi          33%       
[root@master ~]# kubectl top pods
NAME                     CPU(cores)   MEMORY(bytes)   
nginx-7854ff8877-gzw6r   0m           3Mi             
[root@master ~]# 

到这里就安装完成了,可以去使用了

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

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

相关文章

全志R128基础组件开发——显示与屏幕驱动①

RTOS 提供了一套完整的屏幕驱动&#xff0c;支持 RGB, i8080, SPI, DBI 格式的屏幕。 &#xff08;1&#xff09;RGB 接口 RGB接口在全志平台又称HV接口&#xff08;Horizontal同步和Vertical同步&#xff09;。有些LCD屏支持高级的功能比如 gamma&#xff0c;像素格式的设置…

【哈希】哈希表|除留取余法|哈希冲突(拉链法interv)|一致性哈希|虚拟节点

哈希 hash 散列函数&#xff08;将非常大范围的输入&#xff0c;通过一定的函数&#xff0c;可以转换到小规模的输出&#xff09; 什么是哈希&#xff1f; 广义上是一种思想&#xff0c;不是一个特定的东西&#xff0c;只要算法设计中使用到了哈希思想&#xff0c;就可以叫…

怎样选择多线程多进程和多协程?

有这么多可以实现并发的方式方法,那么,我们怎么确定在合适的时机采用合适的实现方法呢?这就需要我们对各个实现并发的方式方法有一个全面的概念性的理解,以及他们的内在执行逻辑优缺点有一个清晰的认识! 如下图所示,首先我们需要对单进程、多进程、多线程及多协程之间有…

【代码随想录-链表】两两交换链表中的节点

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

docker-compose Install HertzBeat

HertzBeat前言 HertzBeat 赫兹跳动 是一个拥有强大自定义监控能力,高性能集群,兼容 Prometheus,无需 Agent 的开源实时监控告警系统。 易用友好的开源实时监控告警系统,无需Agent,高性能集群,兼容Prometheus,强大自定义监控能力。​ 集 监控+告警+通知 为一体,支持对…

Redis -- 开篇热身,常用的全局命令

目录 Redis重要文件 启动停止脚本 配置文件 持久化文件存储目录 核心命令 set get 全局命令 keys exists del expire ttl 过期策略是如何实现的 定时器 type 小结 Redis重要文件 启动停止脚本 /usr/bin/redis-benchmark &#xff1a; 用于对Redis做性能基准…

故障诊断 | 一文解决,LSTM长短期记忆神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现LSTM长短期记忆神经网络故障诊断 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

nodejs+vue+mysql大学生心理健康咨询预约评价管理系统1xmao

本课题要求实现一套高校大学生心理咨询管理系统&#xff0c;系统主要包括管理员模块和用户、咨询师模块功能模块。 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对高校大学生心理咨询管理的现状进行系统调查。采用结构化的分…

力扣之2619.数组原型对象的最后一个元素-JS

Array.prototype.last function () {const a this.length;if (a 0) {return -1;}return this[a - 1]; };const nums [null, {}, 3]; console.log(nums.last());说明&#xff1a; 在 JavaScript 中&#xff0c;Array.prototype 是每个数组对象的原型。通过在 Array.prototy…

故障诊断 | 一文解决,BiLSTM双向长短期记忆神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现BiLSTM双向长短期记忆神经网络故障诊断 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

QT自制软键盘 最完美、最简单、支持中文输入(二)

目录 一、前言 二、本自制虚拟键盘特点 三、中文输入原理 四、组合键输入 五、键盘事件模拟 六、界面 七、代码 7.1 frmKeyBoard 头文件代码 7.2 frmKeyBoard 源文件代码 八、使用示例 九、效果 十、结语 一、前言 由于系统自带虚拟键盘不一定好用&#xff0c;也不一…

《区块链简易速速上手小册》第10章:区块链的未来与趋势(2024 最新版)

文章目录 10.1 区块链的未来展望10.1.1 基础知识10.1.2 主要案例&#xff1a;区块链在金融领域的发展10.1.3 拓展案例 1&#xff1a;区块链在供应链管理中的应用10.1.4 拓展案例 2&#xff1a;区块链在身份管理和隐私保护中的应用 10.2 新兴技术与区块链的融合10.2.1 基础知识1…

大创项目推荐 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分&#xff1a;4.2 损失函数&#xff1a;4.3 搭建seq2seq框架&#xff1a;4.4 测试部分&#xff1a;4.5 评价NLP测试效果&#xff1a;4.6 梯度截断…

力扣hot100 组合总和 回溯 剪枝 组合

Problem: 39. 组合总和 文章目录 思路复杂度&#x1f496; Code 思路 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) &#x1f496; Code class Solution{List<List<Integer>> res new ArrayList<>();int x;// 全局targetin…

计算机服务器中了halo勒索病毒怎么办,halo勒索病毒解密

在网络技术飞速发展的今天&#xff0c;越来越多的企业依赖数字化办公&#xff0c;为企业的生产生活提供了极大便利&#xff0c;但网络是一把双刃剑&#xff0c;网络安全威胁无处不在。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器中了ha…

九州金榜家庭教育中孩子叛逆怎么办?

青春期是每个孩子成长过程中必经的重要阶段&#xff0c;也是一个充满挑战和矛盾的时期。在这个时期&#xff0c;孩子们就会独立思考事情&#xff0c;有自己的想法&#xff0c;追求自我价值&#xff0c;但由于对世界不能完全认知&#xff0c;具有局限性&#xff0c;他们往往会对…

Flutter开发2:安装Flutter

在本篇博客中&#xff0c;我们将详细介绍如何安装Flutter开发环境。安装Flutter是开始使用Flutter进行跨平台移动应用开发的第一步。让我们开始吧&#xff01; 官方安装文档 步骤1&#xff1a;下载Flutter SDK 打开浏览器&#xff0c;访问Flutter官方网站&#xff1a;https://…

PyTorch深度学习实战(34)——Pix2Pix详解与实现

PyTorch深度学习实战&#xff08;34&#xff09;——Pix2Pix详解与实现 0. 前言1. 模型与数据集1.1 Pix2Pix 基本原理1.2 数据集分析1.3 模型构建策略 2. 实现 Pix2Pix 生成图像小结系列链接 0. 前言 Pix2Pix 是基于生成对抗网络 (Convolutional Generative Adversarial Netwo…

【数据结构 02】队列

一、原理 队列通常是链表结构&#xff0c;只允许在一端进行数据插入&#xff0c;在另一端进行数据删除。 队列的特性是链式存储&#xff08;随机增删&#xff09;和先进先出&#xff08;FIFO&#xff1a;First In First Out&#xff09;。 队列的缺陷&#xff1a; 不支持随机…

【issue-环境】Windows安装Docker

启用Hyper-V以在 Windows 10上创建虚拟机 法一&#xff1a;使用 PowerShell 启用 Hyper-V 以管理员身份打开PowerShell控制台&#xff0c;运行以下命令&#xff1a; Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All法二&#xff1a;通过设置中/控…