K8S实战:Centos7部署Kubernetes1.20.0集群

目录

  • 一、准备工作
    • 1.1、创建3台虚拟机
      • 1.1.1、下载虚拟机管理工具
      • 1.1.2、安装虚拟机管理工具
      • 1.1.3、下载虚Centos镜像
      • 1.1.4、创建3台虚拟机
      • 1.1.5、设置虚拟机网络环境
    • 1.2、虚拟机基础配置(3台虚拟机进行相同处理)
      • 1.2.1、配置host
      • 1.2.2、关闭防火墙
      • 1.2.3、将桥接的IPv4流量传递到iptables的链
  • 二、Docker安装(所有节点执行)
  • 三、Kubernetes安装
    • 3.1、配置阿里云yum源(所有节点执行)
    • 3.2、安装(所有节点执行)
    • 3.3、matser节点初始化
    • 3.4、创建文件夹、复制文件并给予权限(matser节点)
    • 3.5、安装网络插件(matser节点)
    • 3.6、安装node节点
  • 四、kubernetes-dashboard安装
    • 4.1、安装kubernetes-dashboard
    • 4.2、暴露端口
    • 4.3、查询放行的端口
    • 4.4、访问web界面
    • 4.5、创建访问账号
    • 4.6、生成令牌
  • 五、附言
  • 六、参考资料

一、准备工作

1.1、创建3台虚拟机

1.1.1、下载虚拟机管理工具

由于我的笔记本使用vmware安装虚拟机老是有问题,本次我使用的是Oracle VM VirtualBox虚拟机。下载地址:https://www.virtualbox.org/wiki/Downloads

1.1.2、安装虚拟机管理工具

双击下载的.exe文件即可,建议不要安装在C盘,原因大家都懂的。

1.1.3、下载虚Centos镜像

通过“里巴巴开源镜像站”https://developer.aliyun.com/mirror/进行下载,我本次下载的是Centos 7.9

1.1.4、创建3台虚拟机

创建虚拟机的过程此次省略,不懂的可以去百度就可以了。

1.1.5、设置虚拟机网络环境

我设置的虚拟机网络环境为“桥接模式”

1.2、虚拟机基础配置(3台虚拟机进行相同处理)

1.2.1、配置host

host配置如下图所示,IP地址使用自己的IP地址

192.168.1.7 k8s-master
192.168.1.8 k8s-node01
192.168.1.9 k8s-node02

1.2.2、关闭防火墙

执行一下命令完成操作

systemctl stop firewalld
systemctl disable firewalld

1.2.3、将桥接的IPv4流量传递到iptables的链

执行一下命令进行配置

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

二、Docker安装(所有节点执行)

参考我的另一篇博文:CentOS 7.8 Docker安装、卸载与Docker-Compose的安装

三、Kubernetes安装

3.1、配置阿里云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.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

3.2、安装(所有节点执行)

所有虚拟机执行以下命令进行安装kubelet、kubeadm和kubectl。

yum -y install kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet

执行下面命令关闭swap,不然执行kubeadm命令时会报错

swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

3.3、matser节点初始化

使用以下命令进行matser节点初始化

sysctl -w net.ipv4.ip_forward=1
kubeadm init --apiserver-advertise-address=192.168.1.7 --apiserver-bind-port=6443 --pod-network-cidr=192.168.1.0/16  --service-cidr=10.96.0.0/12 --kubernetes-version=1.20.0 --image-repository registry.aliyuncs.com/google_containers

3.4、创建文件夹、复制文件并给予权限(matser节点)

matser节点初始化成功之后,安装日志会输出接下来操作的提示,执行如下命令创建文件夹、复制文件并给予权限

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

3.5、安装网络插件(matser节点)

通过下面链接下载插件yaml文件

https://docs.projectcalico.org/v3.20/manifests/calico.yaml

修改配置文件,如下图所示
在这里插入图片描述
通过下面命令安装网络插件

kubectl apply -f calico.yaml

3.6、安装node节点

执行matser节点初始化安装成功后,安装日志会输出安装node节点的命令,复制命令,在其他两个node节点中执行。

kubeadm join 192.168.1.7:6443 --token ysjwr1.ii05kwoyv823gdqe --discovery-token-ca-cert-hash sha256:7c6240a7b293068427e031f5d072e4b4c3ab1048fa947a52b8f882b10cca0914

至此,如果顺利的话,kubernetes的安装就完成了,可以使用一下命令检查是否安装成功

kubectl get nodes
kubectl get pods -A

四、kubernetes-dashboard安装

4.1、安装kubernetes-dashboard

执行以下命令安装kubernetes-dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

4.2、暴露端口

执行以下命令

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

type: ClusterIP 改为 type: NodePort

4.3、查询放行的端口

使用以下命令进行查询。

kubectl get svc -A |grep kubernetes-dashboard

4.4、访问web界面

访问: https://集群任意IP:端口 例如:https://192.168.1.7:31820/

4.5、创建访问账号

执行以下命令创建访问账号。

vi dash.yaml# 内容如下:
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:1. kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

然后执行以下命令

kubectl apply -f dash-usr.yaml

4.6、生成令牌

执行以下命令生成令牌。

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

五、附言

本次搭建kubernetes集群差不多花了一天半了时间。主要在以下几个地方耗费了比较多的时间。

  1. 虚拟机IP地址查看
    在执行ipconfig查看IP的时候提示命令不存在,然后在执行yum install upgrade报如下错误
cannot find valid baseurl for repobase/7/x86_64

解决办法:
执行以下命令,

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
service network restart
yum install upgrade
yum install net-tools

将onboot修改为“yes”,如下图所示
在这里插入图片描述
2. master节点初始化
在参考 Kubernetes集群部署中执行kubeadm init --config=init-config.yaml时,一直报如下错误
错误一:

Failed to start Docker Application Container Engine.

错误二:

k8s-master node not found.

解决方案:
卸载kubernetes旧版本,使用如下脚本

yum remove kube*
modprobe -r ipip
lsmod
rm -rf /etc/kubernetes/
rm -rf /etc/cni
rm -rf /var/lib/etcd
yum clean all

使用如下命令进行初始化并升级kubernetes的版本

kubeadm init --apiserver-advertise-address=192.168.1.7 --apiserver-bind-port=6443 --pod-network-cidr=192.168.1.0/16  --service-cidr=10.96.0.0/12 --kubernetes-version=1.20.0 --image-repository registry.aliyuncs.com/google_containers

补充:kubernetes-dashboard卸载
master节点初始化重置命令

kubeadm reset 
  1. kubernetes-dashboard安装
    在参考 Kubernetes(K8S)集群部署安装完kubernetes-dashboard一直打不开,开始以为是端口防火墙或火狐浏览器太新的问题,后面通过执行kubectl get pod -A发现kubernetes-dashboard的状态不对,服务压根就没起来。
    解决方案:
    通过查看kubernetes-dashboard与kubernetes版本对应关系升级kubernetes-dashboard到v2.4.0解决

补充:kubernetes-dashboard卸载
删除现有的dashboard服务

kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete service dashboard-metrics-scraper --namespace=kubernetes-dashboard

删除现有的dashboard pod

kubectl delete deployment kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete deployment dashboard-metrics-scraper --namespace=kubernetes-dashboard

强制删除现有的dashboard pod命令

kubectl delete pods kubernetes-dashboard-658485d5c7-qnp55 -n kubernetes-dashboard --grace-period=0 --force

六、参考资料

  1. linux下ipconfig命令报:command not found 解决方法
  2. Kubernetes(K8S)集群部署
  3. Kubernetes集群部署
  4. k8s 安装 dashboard与卸载
  5. kubernetes-dashboard与kubernetes版本对应关系

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

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

相关文章

String字符串,FastJson常用操作方法

JSON字符串操作 1、创建配置环境 # 引入测试包testImplementation group: org.springframework.boot, name: spring-boot-starter-test, version: 2.2.6.RELEASE # 创建测试类RunWith(SpringRunner.class)SpringBootTestpublic class JsonTest {Testpublic void test(){Syste…

关于Linux中使用退格键出现^H的问题解决

关于Linux中使用退格键出现^H的问题解决 今天在Linux下执行脚本和监听端口的输入时候&#xff0c;不小心输错内容想要删除用退格键发现变成了^H&#xff0c;从网上查了资料并且实际应用了一下&#xff08;我的虚拟机是CentOS7&#xff09;。 使用ctrl退格键即可成功删除内容 …

LeetCode.105. 从前序与中序遍历序列构造二叉树

题目 105. 从前序与中序遍历序列构造二叉树 分析 这道题是告诉我们一颗二叉树的前序和中序&#xff0c;让我们根据前序和中序构造出整颗二叉树。 拿到这道题&#xff0c;我们首先要知道前序的中序又怎样的性质&#xff1a; 前序&#xff1a;【根 左 右】中序&#xff1a;…

Linux用到的命令

1 压缩文件 tar -czf wonderful.tar.gz pm 这个命令的作用就是创建一个以.tar.gz结尾的包文件&#xff0c;然后调用gzip程序将当前目录下的pm文件夹压缩到这个以.tar.gz结尾的文件里面去

【已解决】PPT无法复制内容怎么办?

想要复制PPT文件里的内容&#xff0c;却发现复制不了&#xff0c;怎么办&#xff1f; 这种情况&#xff0c;一般是PPT文件被设置了以“只读方式”打开&#xff0c;“只读方式”下的PPT无法进行编辑更改&#xff0c;也无法进行复制粘贴的操作。 想要解决这个问题&#xff0c;我…

激光雷达反光板算法总结

1 高反特征提取 首先,从雷达原始数据,提取到高反点;根据雷达的规格书提供的不同材料的强度,设定合适的阈值;;更优的方法是根据距离设定不同的阈值 2 反光板及反光柱的聚类 根据高反点是否连续进行聚类,同时结合距离及雷达的角度分辨率,计算出针对不同尺寸的反光板或反…

多任务互斥及队列

一.互斥的引入 在FreeRTOS中&#xff0c;互斥&#xff08;Mutex&#xff09;是一种用于保护共享资源的机制。互斥锁可以确保同一时间只有一个任务能够访问共享资源&#xff0c;从而避免了竞态条件和数据不一致的问题。 FreeRTOS中互斥的引入方法&#xff1a; 创建互斥锁&#…

win10开机黑屏,explorer.exe文件找不到

一、问题 今天清理c盘时&#xff0c;不知道做了什么操作&#xff0c;把相关文件弄没了&#xff0c;然后电脑开机黑屏&#xff0c;进入不了桌面&#xff0c;能看见鼠标。 二、解决办法 网上搜了一些解决办法&#xff1a;ctrlshftdelete 打开任务管理器》运行新任务》输入expl…

MySQL数据库基础(十二):子查询(三步走)

文章目录 子查询&#xff08;三步走&#xff09; 一、子查询&#xff08;嵌套查询&#xff09;的介绍 二、子查询的使用 三、总结 子查询&#xff08;三步走&#xff09; 一、子查询&#xff08;嵌套查询&#xff09;的介绍 在一个 select 语句中,嵌入了另外一个 select …

《Linux C编程实战》笔记:消息队列

消息队列是一个存放在内核中的消息链表&#xff0c;每个消息队列由消息队列标识符标识。与管道不同的是消息队列存放在内核中&#xff0c;只有在内核重启&#xff08;即操作系统重启&#xff09;或显示地删除一个消息队列时&#xff0c;该消息队列才会被真正的删除。 操作消息…

OPPO公布全新AI战略,AI 手机时代再提速

2024年2月20日&#xff0c;深圳——今日OPPO 举办 AI 战略发布会&#xff0c;分享新一代 AI 手机的四大能力特征&#xff0c;展望由AI驱动的手机全栈革新和生态重构的趋势&#xff0c;并发布由OPPO AI 超级智能体和 AI Pro 智能体开发平台组成的OPPO 1N 智能体生态战略&#xf…

Android基础Adapter适配器详解

一、概念 Adapter是后端数据和前端显示UI的适配器接口。常见的View如ListView、GridView等需要用到Adapter. BaseAdapter&#xff1a;抽象类&#xff0c;实际开发中继承这个类并且重写相关方法&#xff0c;用得最多的一个Adapter&#xff01; ArrayAdapter&#xff1a;支持泛型…

数字化商品管理:革新鞋服零售模式,引领智能商业新时代

随着科技的快速发展&#xff0c;数字化浪潮席卷各行各业&#xff0c;鞋服零售企业亦不例外。在这个新时代&#xff0c;数字化商品管理不仅成为鞋服零售企业革新的关键&#xff0c;更是其引领智能商业浪潮的重要引擎。本文将围绕数字化商品管理如何深刻影响鞋服零售模式&#xf…

力扣 309. 买卖股票的最佳时机含冷冻期

题目来源&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/ C题解&#xff1a;动态规划 状态1&#xff1a;表示持有股票。更新为之前持有股票&#xff08;dp[i-1][0]&#xff09;或者不持有股票且不处于冷冻期后买入&…

make_shared_for_overwrite

这个函数用来malloc数组&#xff0c;但不初始化。 不过这个仅限于内置类型。如果是用户写的&#xff0c;就会增加自动初始化&#xff08;调用客户写的初始化&#xff09;。

Java基于SSM的羽毛球馆管理系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

[word] word带圈数字20以上 #笔记#笔记

word带圈数字20以上 办公中有时候需要用到带圈数字&#xff0c;超过20的数字就不能直接编辑了&#xff0c;那么20以上带圈数字要怎么输入呢&#xff1f;其实通过小技巧就能完成的&#xff0c;接下来就给大家介绍下呢&#xff0c;一起看看吧&#xff01; 20以上带圈数字输入技巧…

Java Swing游戏开发学习1

不使用游戏引擎&#xff0c;只使用Java SDK开发游戏的学习。 游戏原理 图片来自某大佬视频讲解 原理结合实际代码 public class GamePanel extends Jpanel implements Runnable {...run(){}// 详情看下图... }项目结构 运行效果 代码code 在我的下载里面可以找到&#xf…

USART(串口发送接受单字节)

一、硬件 差分信号不需要太大的压差。在相同的电磁干扰的环境下&#xff0c;因为是双扭线&#xff0c;两根线受干扰的程度是一样的&#xff0c;所以压差相对不变。提高抗干扰能力。485是双绞线传输取的是两线的压差。一般来说受干扰后同步变化&#xff0c;比如都升0.5V或都降5…

PROBIS铂思金融破产后续:ASIC牌照已注销

2024年1月31日&#xff0c;PROBIS铂思金融的澳大利亚ASIC牌照 (AFSL 338241) 被注销《差价合约经纪商PROBIS宣布破产&#xff0c;澳大利亚金融服务牌照遭暂停》&#xff0c;这也就意味着&#xff0c;PROBIS铂思金融目前已经没有任何金融牌照。 值得注意的是&#xff0c;时至今日…