K8S集群安装(二)

news2024/12/25 9:35:09

目录

1       安装说明.... 1

1.1      安装环境.... 1

1.2      生产环境可部署Kubernetes集群的两种方式.... 2

1.3      操作系统初始化配置.... 3

2       安装Docker/kubeadm/kubelet【所有节点】.... 4

2.1      安装Docker. 4

2.2      添加阿里云YUM软件源.... 4

2.3      安装kubeadm,kubelet和kubectl. 4

3       部署Kubernetes Master. 5

4       加入Kubernetes Node. 6

5       部署容器网络(CNI).... 6

6       测试kubernetes集群.... 7

7       部署 Dashboard. 7

8       注意事项.... 9

  1. 安装说明
    1. 安装环境

服务器要求:

  • 建议最小硬件配置:4核CPU、2G内存、60G硬盘
  • 服务器最好可以访问外网,会有从网上拉取镜像需求,如果服务器不能上网,需要提前下载对应镜像并导入节点

软件环境:

软件

版本

操作系统

CentOS7_x64最好带UI界面

Docker

19-ce

Kubernetes

1.20

服务器规划:

角色

IP

k8s-master

192.168.190.61

k8s-node1

192.168.190.62

k8s-node2

192.168.190.63

架构图:

    1. 生产环境可部署Kubernetes集群的两种方式

目前生产部署Kubernetes集群主要有两种方式:

  • kubeadm

Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。

  • 二进制包

从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。

这里采用kubeadm搭建集群。

kubeadm工具功能:

  • kubeadm init:初始化一个Master节点
  • kubeadm join:将工作节点加入集群
  • kubeadm upgrade:升级K8s版本
  • kubeadm token:管理 kubeadm join 使用的令牌
  • kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改
  • kubeadm version:打印 kubeadm 版本
  • kubeadm alpha:预览可用的新功能
    1. 操作系统初始化配置

# 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld



# 关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久

setenforce 0  # 临时



# 关闭swap

swapoff -a  # 临时

sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久



# 根据规划设置主机名

hostnamectl set-hostname <hostname>



# 在master添加hosts

cat >> /etc/hosts << EOF

192.168.190.61 k8s-master1

192.168.190.62 k8s-node1

192.168.190.63 k8s-node2

EOF



# 将桥接的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  # 生效



# 时间同步

yum install ntpdate -y

ntpdate time.windows.com
  1. 安装Docker/kubeadm/kubelet【所有节点】

这里使用Docker作为容器引擎,也可以换成别的,例如containerd

    1. 安装Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum -y install docker-ce

systemctl enable docker && systemctl start docker

配置镜像下载加速器:

cat > /etc/docker/daemon.json << EOF

{

  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]

}

EOF

systemctl restart docker

docker info
    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.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF
    1. 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

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

systemctl enable kubelet
  1. 部署Kubernetes Master

在192.168.190.61(Master)执行。

kubeadm init \

  --apiserver-advertise-address=192.168.190.61 \

  --image-repository registry.aliyuncs.com/google_containers \

  --kubernetes-version v1.20.0 \

  --service-cidr=10.96.0.0/12 \

  --pod-network-cidr=10.244.0.0/16 \

  --ignore-preflight-errors=all
  • --apiserver-advertise-address 集群通告地址
  • --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  • --kubernetes-version K8s版本,与上面安装的一致
  • --service-cidr 集群内部虚拟网络,Pod统一访问入口
  • --pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致

或者使用配置文件引导:

vi kubeadm.conf

apiVersion: kubeadm.k8s.io/v1beta2

kind: ClusterConfiguration

kubernetesVersion: v1.20.0

imageRepository: registry.aliyuncs.com/google_containers 

networking:

  podSubnet: 10.244.0.0/16 

  serviceSubnet: 10.96.0.0/12 



kubeadm init --config kubeadm.conf --ignore-preflight-errors=all  

初始化完成后,最后会输出一个join命令,先记住,下面用。

拷贝kubectl使用的连接k8s认证文件到默认路径:

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



注:由于网络插件还没有部署,还没有准备就绪 NotReady

参考资料:

kubeadm init | Kubernetes

Creating a cluster with kubeadm | Kubernetes

  1. 加入Kubernetes Node

在192.168.190.62/63(Node)执行。

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

kubeadm join 192.168.190.61:6443 --token 7gqt13.kncw9hg5085iwclx \

--discovery-token-ca-cert-hash sha256:66fbfcf18649a5841474c2dc4b9ff90c02fc05de0798ed690e1754437be35a01

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,可以直接使用命令快捷生成:

kubeadm token create --print-join-command

参考资料:kubeadm join | Kubernetes

  1. 部署容器网络(CNI)

Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案。

下载YAML:

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

下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定的一样。

修改完后文件后,部署:

kubectl apply -f calico.yaml

kubectl get pods -n kube-system

等Calico Pod都Running,节点也会准备就绪:

参考资料:Creating a cluster with kubeadm | Kubernetes

  1. 测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc

访问地址:http://NodeIP:Port

  1. 部署 Dashboard

Dashboard是官方提供的一个UI,可用于基本管理K8s资源。

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

课件中文件名是:kubernetes-dashboard.yaml

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:

vi recommended.yaml

...

kind: Service

apiVersion: v1

metadata:

  labels:

    k8s-app: kubernetes-dashboard

  name: kubernetes-dashboard

  namespace: kubernetes-dashboard

spec:

  ports:

    - port: 443

      targetPort: 8443

      nodePort: 30001

  selector:

    k8s-app: kubernetes-dashboard

  type: NodePort

...



kubectl apply -f recommended.yaml

kubectl get pods -n kubernetes-dashboard

访问地址:https://NodeIP:30001

创建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

# 获取用户Token

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

使用输出的token登录Dashboard。

 

  1. 注意事项

问题:

虚拟机页面线图画圈的图标消失

设置 ——>网络,只有VPN ,没有有线

 并且Ping不通

解决办法:

输入下面代码

mv /var/lib/NetworkManager /var/lib/NetworkManager.bak

重启,看一下是否恢复,如果没有,输入下面代码(用root登录,不然就在前面加上 sudo)

systemctl start NetworkManager.service

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

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

相关文章

《Apollo 智能驾驶进阶课程》

来自 &#xff1a; https://www.bilibili.com/video/BV1G341117NQ/ https://apollo.baidu.com/ 主要学习资源如下&#xff1a; Apollo社区公众号&#xff0c;直接有整个视频教程的微信推文教程&#xff1a;链接一个CSDN博主记录的笔记&#xff1a; https://blog.csdn.net/qq_45…

08 redis经典五种数据类型及底层实现

redis是字典数据库KV键值对是什么 redis 是 key-value 存储系统&#xff0c;其中key类型一般为字符串&#xff0c;value 类型则为redis对象(redisObject)Redis定义了redisObjec结构体来表示string、hash、list、set、zset等数据类型 C语言struct结构体语法简介Redis 中每个对象…

【华为机试】死记硬背没思路?一般人我劝你还是算了吧

大家好&#xff0c;我是哪吒。 五月份之前&#xff0c;如果你参加华为OD机试&#xff0c;收到的应该是2022Q4或2023Q1&#xff0c;这两个都是A卷题。 5月10日之后&#xff0c;很多小伙伴收到的是B卷&#xff0c;那么恭喜你看到本文了&#xff0c;抓紧刷题吧。B卷新题库正在更…

Spring依赖注入解析

目录 依赖注入大致要点 依赖注入大致流程 Bean的预实例化 doGetBean createBean 完备Bean的创建过程 createBeanInstance populateBean 依赖注入大致要点 Spring在Bean实例的创建过程中做了很多精细化控制finishBeanFactoryInitialization方法里面的preInstantiateSing…

【计算机网络复习】第六章 局域网 LAN

局域网&#xff08; LAN&#xff09;概述 LAN的特点 • 覆盖范围小 房间、建筑物、园区范围 • 高传输速率 10Mb/s&#xff5e;1000Mb/s • 低误码率 10-8 &#xff5e; 10-11 • 拓扑&#xff1a;总线型、星形、环形 • 介质&#xff1a;UTP、Fiber、C…

6年测试经验之谈,为什么要做自动化测试?

一、自动化测试 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。 个人认为&#xff0c;只要能服务于测试工作&#xff0c;能够帮助我们提升工作效率的&#xff0c;不管是所谓的自动化工具&#xff0c;还是简单的SQL 脚本、批处理脚本&#xff0c;还是自己编写…

智能优化算法:指数分布优化算法-附代码

智能优化算法&#xff1a;指数分布优化算法 文章目录 智能优化算法&#xff1a;指数分布优化算法1.指数分布优化算法1.1种群初始化1.2EDO开发1.3EDO探索 2.实验结果3.参考文献4.Matlab5.python 摘要&#xff1a;指数分布优化算法&#xff08;Exponential distribution optimize…

全新好用的窗口置顶工具WindowTop

打开WindowTop软件&#xff0c;所有已打开的窗口都会在左上角出现一个置顶栏&#xff0c;点击置顶栏的置顶复选框即可置顶窗口或取消窗口。   在WindowTop软件的置顶栏一项里可以自由调整置顶栏的元素&#xff08;包含增删位置&#xff09;。   可改变置顶栏的外观&#x…

剖析ffmpeg视频解码播放:时间戳的处理

一、视频播放基础理论 1.1 视频编码和解码基础 视频编码和解码是视频播放的基础&#xff0c;理解它们的工作原理对于深入理解视频播放至关重要。在这一部分&#xff0c;我们将详细介绍视频编码和解码的基础知识。 视频编码&#xff08;Video Encoding&#xff09;是将原始视…

离散数学_十章-图 ( 5 ):连通性 - 上

&#x1f4f7;10.5 图的连通性 1. 通路1.1 通路1.2 回路1.3 其他术语 2. 无向图的连通性2.1 无向图的连通与不连通2.2 定理2.3 连通分支 3. 图是如何连通的3.1 割点&#xff08; 关节点&#xff09;3.2 割边&#xff08; 桥&#xff09;3.3 不可分割图3.4 &#x1d458;(&#…

Linux内核模块开发 第 5 章

The Linux Kernel Module Programming Guide Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang译 断水客&#xff08;WaterCutter&#xff09; 5 预备知识&#xff08;Preliminaries&#xff09; 5.1 模块的入口函数和出口函数 C 程序通常从 ma…

建筑与建材行业相关深度学习数据集大合集

近期又整理了一批建筑与建材行业相关深度学习数据集&#xff0c;分享给大家。废话不多说&#xff0c;直接上干货&#xff01;&#xff01; 1、埃及的地标数据集 自从历史开始以来&#xff0c;埃及一直是许多文明、文化和非常著名的地标的家园&#xff0c;现在你(和你的ML模型…

守护进程【Linux】

文章目录 前导知识shell、terminal、console进程组作业会话测试 会话控制jobfgbgps 守护进程作用查看守护进程创建守护进程 前导知识 shell、terminal、console terminal&#xff08;终端&#xff09;是一种可以和计算机交互的设备&#xff0c;通常有键盘和显示器&#xff0c…

RocketMq 的基本知识1

一RocketMq的基本知识 1.1 RocketMq的基本知识 MQ &#xff0c; Message Queue &#xff0c;是一种提供 消息队列服务 的中间件&#xff0c;也称为消息中间件。 1.2 作用 1.流量消峰 2.异步传输 3.日志收集 1.3 核心概念 1消息&#xff1a; 消息是指&#xff0c;消息系统所…

基于内存操作的Redis数据库--详解

目录 基本概念 基本操作 redis的五个基本类型 Redis-key&#xff08;不区分大小写&#xff09; 字符串 string Redis的特殊类型 geospatial地理空间 事务 Redis的持久化 RDB&#xff08;.rdb&#xff09; 触发机制 优点 缺点 AOF&#xff08;.aof&#xff09; 优点…

冈萨雷斯DIP第8章知识点

8.1 基础 图像中的冗余 编码冗余&#xff1a;用于表示灰度的8比特编码所包含的比特数&#xff0c;要比表示该灰度所需要的比特数多。可通过变长编码来解决。 空间和时间冗余&#xff1a;与相邻像素相似(图像)&#xff1b;时间&#xff1a;相邻帧中的像素(视频)。可以使用行程…

缺陷管理利器推荐:介绍几款好用的缺陷管理工具

缺陷管理是项目管理工作中的重要环节。Excel表格是国内团队常用的缺陷管理工具&#xff0c;具备上手容易&#xff0c;免费的优点&#xff0c;不过也存在协同不便&#xff0c;不易管理&#xff0c;效率低的不足之处。 一套缺陷管理工具可以帮助我们进行规范化自动化的缺陷管理&a…

LearnOpenGL-高级OpenGL-8.高级GLSL

本人初学者&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 文章目录 高级GLSLGLSL的内建变量在顶点着色器的内建变量gl_PointSizegl_VertexID 在片段着色器的内建变量gl_FragCoordgl_FrontFacinggl_FragDepth 接口块Uniform缓冲对象Uniform块布局使用Uniform缓冲简…

关于惠普M277打印机手动双面打印和自动双面打印设置

一&#xff0e;手动双面打印设置​​​​​​​ 1.键盘WINR&#xff0c;在运行框输入“control”&#xff0c;回车或者点击确定。 ​​​​​​​ 2.在控制面板找到设备和打印机&#xff0c;点击进去。 3.找到HP M277字样的打印机&#xff0c;右键选择打印机属性。 4.点击设…