centos7.9安装k8s 1.3

news2024/12/24 3:28:10

centos7.9安装k8s 1.3

  • k8s环境规划:
    • 初始化
    • 修改网卡配置
    • 两台服务器都执行 配置阿里yum源
  • 安装containerd服务
  • 安装初始化k8s需要的软件包
    • kubeadm初始化k8s集群
  • 扩容k8s集群-添加第一个工作节点
  • 安装kubernetes网络组件-Calico
  • 测试在k8s创建pod是否可以正常访问网络和coredns

k8s环境规划:

物理机网段:192.168.40.0/24
podSubnet(pod网段) 10.244.0.0/16
serviceSubnet(service网段): 10.96.0.0/12
在这里插入图片描述

初始化

master执行修改主机名

hostnamectl set-hostname k8smaster1 && bash

node执行修改主机名

hostnamectl set-hostname k8snode1 && bash

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

修改每台机器的/etc/hosts文件

vim /etc/hosts
192.168.40.120   k8smaster1  
192.168.40.121   k8snode1  

关闭交换分区swap,提升性能

swapoff -a
vim /etc/fstab
#/dev/mapper/centos-swap swap      swap    defaults        0 0

修改机器内核参数

modprobe br_netfilter
vim /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
#net.bridge.bridge-nf-call-ip6tables这个参数启用了 IPv6 的iptables netfilter hook,允许 Linux 内核在网络层面上进行 IPv6 数据包的过滤和处理。在 Kubernetes 中,这个参数通常需要启用,因为 Kubernetes 网络通常是基于 iptables 实现的,而且在一些网络插件中可能会使用到 IPv6。这个参数的启用确保了 Linux 内核在处理 IPv6 数据包时会经过 iptables 过滤,从而确保网络功能的正常运行。
#net.bridge.bridge-nf-call-iptables 这个参数启用了 IPv4 的iptables netfilter hook,类似于前一个参数,但是针对 IPv4 数据包。它允许 Linux 内核在网络层面上进行 IPv4 数据包的过滤和处理。在 Kubernetes 中,这个参数通常需要启用,因为 Kubernetes 网络通常是基于 iptables 实现的,而且在一些网络插件中可能会使用到 Ipv4。这个参数的启用确保了 Linux 内核在处理 Ipv4 数据包时会经过 iptables 过滤,从而确保网络功能的正常运行。
#net.ipv4.ip_forward  这个参数启用了 Linux 内核的 IP 转发功能,允许 Linux 主机将收到的数据包从一个网络接口转发到另一个网络接口。在 Kubernetes 中,Pod 可能会跨越多个节点进行通信。例如,当一个 Pod 需要访问另一个 Pod 或外部服务时,网络流量可能需要通过不同的节点进行路由。启用 IP 转发功能允许 Linux 主机将收到的数据包从一个网络接口转发到另一个网络接口,从而实现跨节点通信。

sysctl 将读取 /etc/sysctl.d/k8s.conf 文件中的参数,并将其应用到当前系统。

sysctl -p /etc/sysctl.d/k8s.conf

关闭firewalld防火墙

systemctl stop firewalld ; systemctl disable firewalld

如需开启防火墙

kube-apiserver端口是6443,etcd端口是23792380,kube-controller-manager端口是10257, kube-scheduler端口是10259,kubelet端口10250,Kube-proxy:默认使用动态分配的端口(TCP/UDP),通常在 102465535 之间。calico端口TCP 179,UDP4789,TCP5743,UDP4789,443

例如

firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --reload

配置时间同步

yum install ntpdate -y
ntpdate cn.pool.ntp.org
crontab -e
* *  * * * /usr/sbin/ntpdate   cn.pool.ntp.org
systemctl restart crond

修改网卡配置

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#UUID ifcfg-ens33.bak的,其他都修改
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
UUID=47ae7c92-d10d-4409-aa48-5891ff6fcf95
DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.40.120
NETMASK=255.255.255.0
GATEWAY=192.168.40.2
DNS1=192.168.40.2
PREFIX=24
service network restart

两台服务器都执行 配置阿里yum源

vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

安装常用命令

yum install -y device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack telnet ipvsadm

配置国内安装docker和containerd的阿里云在线源

yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装containerd服务

在 Kubernetes 中,当一个 Pod 被创建时,Kubernetes 会根据 Pod 中定义的容器信息,将它们交给容器运行时来创建和运行。

安装containerd

yum install containerd.io-1.6.22*  -y
cd /etc/containerd
rm -rf *

上传config.toml
修改config.toml配置文件里的harbor的ip地址,变成自己真实环境的harbor的ip
在这里插入图片描述
在这里插入图片描述
修改镜像仓库为3.9

sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9"

在这里插入图片描述

systemctl start containerd && systemctl enable containerd
systemctl restart containerd 

安装初始化k8s需要的软件包

配置安装k8s组件需要的阿里云的repo源

cat >  /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key
EOF
yum clean all && yum makecache

每台都执行

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

kubeadm初始化k8s集群

只在k8smaster1操作

cd ~
kubeadm config print init-defaults > kubeadm.yaml

根据我们自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式为 ipvs,需要注意的是由于我们使用的containerd作为运行时,所以在初始化节点的时候需要指定cgroupDriver为systemd

vim kubeadm.yaml 
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.40.120 #控制节点的ip
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///run/containerd/containerd.sock  #指定containerd容器运行时
  imagePullPolicy: IfNotPresent
  name:  xianchaomaster1 #控制节点主机名
  taints: null
---
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers #指定阿里云镜像仓库地址,这样在安装k8s时,会自动从阿里云镜像仓库拉取镜像
kind: ClusterConfiguration
kubernetesVersion: 1.30.0 #k8s版本
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16 #指定pod网段, 需要新增加这个
  serviceSubnet: 10.96.0.0/12 #指定Service网段
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

基于kubeadm.yaml初始化k8s集群

kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

显示如下,说明安装完成:
在这里插入图片描述

配置kubectl的配置文件config,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理

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

扩容k8s集群-添加第一个工作节点

master执行

kubeadm token create --print-join-command
显示如下:
kubeadm join 192.168.40.120:6443 --token g3gs5n.copis3bit4b4uuqi \
        --discovery-token-ca-cert-hash sha256:6ddc85fbd2dd77e4ff1815289f6a7483dc3f14b610ddbf9f9a375fc826848000

把k8snode1加入k8s集群

kubeadm join 192.168.40.120:6443 --token g3gs5n.copis3bit4b4uuqi \
        --discovery-token-ca-cert-hash sha256:6ddc85fbd2dd77e4ff1815289f6a7483dc3f14b610ddbf9f9a375fc826848000 --ignore-preflight-errors=SystemVerification

在这里插入图片描述

master执行

kubectl get nodes

在这里插入图片描述

给node打标签

kubectl label nodes k8snode1 node-role.kubernetes.io/work=work
kubectl get nodes
kubectl get pods -n kube-system -owide

在这里插入图片描述

安装kubernetes网络组件-Calico

1)支持网络隔离和多租户场景;
2)为pod提供独立的IP地址;
3)支持跨主机的容器通信,pod可以通过IP地址直接互相访问;
4)提供网络安全策略,支持网络流量控制和访问授权,实现网络安全隔离。

把安装calico和calico.yaml需要的镜像calico.tar.gz传到k8smaster1和k8snode1节点,手动解压:

ctr -n=k8s.io images import calico.tar.gz

calico.yaml文件需要做如下修改

  • 在安装 Calico 网络插件时,指定 IP_AUTODETECTION_METHOD 环境变量是为了确保该插件能够在正确的网络接口上自动检测 Pod IP 地址。这个环境变量的值 “interface=ens33” 指定了 Calico 插件使用 ens33 接口来分配 IP 地址给 Kubernetes Pod,而不是使用默认的自动检测方式。
  • 通常情况下,Kubernetes Pod 中容器的 IP 地址是由容器运行时(如 Docker 或 CRI-O)自动分配的。但是,对于某些网络插件(如 Calico)来说,为了能够正确地配置网络,需要手动指定使用哪个网络接口来自动检测 Pod IP 地址。
  • 因此,在安装 Calico 网络插件时,需要通过 IP_AUTODETECTION_METHOD 环境变量来指定使用 ens33 接口来分配 IP 地址给 Kubernetes Pod。这样可以确保 Calico 插件能够正确地配置 Pod 网络。
  • 如果你网卡接口地址是eth0,那就改成value: “interface=eth0”
vim calico.yaml

在这里插入图片描述

- name: IP_AUTODETECTION_METHOD
  value: "interface=ens33"
kubectl apply -f  calico.yaml
kubectl get node
kubectl get pods -n kube-system -owide

在这里插入图片描述

测试在k8s创建pod是否可以正常访问网络和coredns

把busybox-1-28.tar.gz上传到k8snode1节点,手动解压

ctr -n k8s.io images import busybox-1-28.tar.gz

在master执行

kubectl run busybox --image docker.io/library/busybox:1.28  --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox -- sh
ping www.baidu.com
nslookup kubernetes.default.svc.cluster.local

在这里插入图片描述

注意:busybox要用指定的1.28版本,不能用最新版本,最新版本,nslookup会解析不到dns和ip

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

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

相关文章

数据结构(邓俊辉)学习笔记】词典 02—— 散列函数

文章目录 1. 冲突难免2. 何为优劣3. 整除留余4. 以禅为师5. M A D6. 平方取中7. 折叠汇总8. 伪随机数9. 多项式10. Vorldmort 1. 冲突难免 好&#xff0c;接下来的这一节我们就来介绍散列策略中的第一项&#xff0c;也是最重要的技术&#xff0c;散列函数的设计与定制。 在上…

免杀笔记 ---> 函数踩踏 PEB寻址

又鸽了一段时间了&#xff0c;最近在写这个武器&#xff0c;感兴趣的师傅们可以去看看&#xff08;顺便给我点个Star&#xff09; whoami-juruo/InjectTools: 一款集成了DLL-Session0注入&#xff0c;APC注入&#xff0c;映射注入&#xff0c;线程劫持&#xff0c;函数踩踏自提…

电脑开机出现checking media presence原因分析及解决方法

最近有网友反馈电脑开机出现checking media presence&#xff1f;电脑开机出现checking media presence原因有很多&#xff1a;分区类型不对、双硬盘选择的第一启动项不对等等原因&#xff0c;下面小编就教大家电脑开机出现checking media presence详细解决方法。 电脑开机出现…

【ARM】CMSIS 软件标准接口

目录 CMSIS&#xff1a;Cortex Microcontroller Software Interface Standard1. 概述2. CMSIS-Core2.1 概述2.2 关键组件2.3 示例代码2.4 详细解释 3. CMSIS-DSP3.1 概述3.2 关键组件3.3 示例代码3.4 详细解释 4. CMSIS-RTOS4.1 概述4.2 关键组件4.3 示例代码4.4 详细解释 5. C…

java之equals的使用区别

public class SystermDemo3 {public static void main(String[] args) {String s"abc";StringBuilder sbnew StringBuilder("abc");System.out.println(s.equals(sb));//false//equals方法是被s调用的,而s是字符串//所以equals要看String类中//字符串中的e…

大模型笔记5 Extractive QA任务评估

目录 Extractive QA任务评估 Extractive QA评测指标 precision, recall, f1 ROUGE 划分训练与评估数据集 token位置评估 单个token位置评估 输入label的token位置 预测token位置 评估 Wandb 共享机器同时登录 样本类别平衡 标记token label时对窗口进行筛选 训练…

亚马逊日本站认证 硅藻土商品

商品说明和商品照片 硅藻土商品&#xff0c;是指以硅藻土为主要原料而制作的商品。其中&#xff0c;针对浴室脚垫和杯垫等呈板状的商品&#xff0c;因需确认其石棉含有率符合相关安全基准规定&#xff0c;请您提交相关证明资料。 防止石棉损害健康条例以及相关法令 可证明该产…

[算法题]课程表/课程表 II

题目链接: 课程表 课程表 II 通过拓扑排序求解, 首先认识有向无环图: 入度表示有多少点指向自己, 出度表示自己指向多少点, 拓扑排序的思想则为选出入度为 0 的点排, 然后将被选出的点指向的点的入度减 1, 当入度被减到 0 时表示该点可以被选出, 一直循环直到全部点被选出或…

书生大模型实战营-基础关卡-2-8G 显存玩转书生大模型 Demo

Cli Demo 部署 InternLM2-Chat-1.8B 模型 先简单试试 InternLM2-Chat-1.8B 模型的能力 生成 300 字的小故事 我的prompt&#xff1a;写一个300字以内的小故事,故事符合中国特色. 模型输出&#xff1a;故事整体性还是很好的。 在一个小镇上&#xff0c;住着一只名叫小明的猫咪…

基于Dijkstra的校园导游系统

目录 一. 设计目的 二. 设计背景 三. 系统功能 四. 系统算法实现 五. 系统调试与结果分析 六. 完整源代码 一. 设计目的 通过设计并实现校园导游系统&#xff0c;使学生对数据结构有更深入的了解。该系统综合性非常广&#xff0c;能够极大提高学生的设计&#xff0c;编程及…

数据库中的约束,聚合函数以及联合查询

目录 数据库中的约束 not null unique default primary key foreign key 表的设计 聚合函数&#xff08;查询&#xff09; 分组 联表查询&#xff08;多表查询&#xff09; 内连接 外连接 左外连接 右外连接 自连接 子查询 合并查询 数据库中的约束 为了保证…

用python获取系统的硬件信息(python实例二十九)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.获取系统信息 3.1 代码构思 3.2 代码示例 3.3 运行部分结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

计算机组成原理面试-核心概念-问题理解

目录 1.怎么理解计算机组成原理中存储器、控制器、运算器、输入输出设备之间的协作关系和工作流程 2.比、比特等类似几种表示信息存储的单位具体换算 3.介绍计算机的五大功能-数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能 4.计算机的工作过程/指令…

【Linux基础】Linux基本指令(一)

目录 前言1&#xff0c; ls指令2&#xff0c;pwd指令三&#xff0c;cd指令3.1 当前目录与上级目录3.2 绝对路径和相对路径3.3 tree指令 四&#xff0c;创建一个普通文件或目录4.1 touch指令4.2 mkdir指令 五&#xff0c;删除目录或文件5.1 rmdir指令5.2 rm 指令 六&#xff0c;…

华大基因阿尔茨海默病风险基因检测,助力阿尔茨海默病早预防

中国正面临日益加剧的老龄化挑战。据统计&#xff0c;2020年我国60岁以上的老年人口已达2.6亿&#xff0c;其中轻度认知障碍患者超过3800万&#xff0c;而阿尔茨海默病患者近千万。随着这一趋势的延续&#xff0c;如何早期发现和预防阿尔茨海默病已成为公共卫生领域的重要议题。…

为什么建议从二维向三维GIS开发方向拓展?

GIS开发是地理信息系统领域中一个薪资待遇较高的职业方向&#xff0c;吸引了众多来自测绘、遥感和城市规划等相关专业的学生转型投身于WebGIS开发工作。 那么&#xff0c;今天从技术角度出发&#xff0c;探讨为何鼓励大家超越WebGIS的范畴&#xff0c;继续深入学习三维GIS开发…

el-date-picker 限制开始时间和结束时间

el-date-picker 限制开始时间和结束时间 需求&#xff1a;el-date-picker 月份限制开始时间和结束时间 开始时间&#xff1a;202307 结束时间&#xff1a;202407 代码实现 vue 页面 <el-form-item label"月份" prop"monthList"><el-date-picker …

零基础5分钟上手亚马逊云科技AWS核心云开发/云架构 - 创建高可用数据库集群

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我将每天介绍一个基于亚马逊云科…

测试概论之系统测试

系统测试 文章目录 系统测试一、系统测试定义二、系统测试的对象三、系统测试类型1、功能测试2、性能测试3、压力测试4、容量测试5、GUI 测试6、可以性测试7、安装性测试8、配置测试9、异常测试10、备份测试11、健壮性测试12、文档测试13、在线帮助测试14、网络测试 四、系统测…

为什么奥运会采用通义而不是 OpenAI,现在中国的 AI 技术是世界领先了吗?

奥运会作为全球最盛大的体育赛事之一&#xff0c;一直在不断地引入和利用最新的科技来提升赛事的组织效率、观众体验以及运动员的表现。在2024年巴黎奥运会上&#xff0c;人工智能&#xff08;AI&#xff09;技术的应用尤为引人注目。 首先&#xff0c;关于奥运会采用的技术选…