【K8s】openEuler23操作系统安装Docker和Kubernetes

news2024/12/23 15:44:55

openEuler23操作系统安装

服务器搭建环境随手记

文章目录

  • openEuler23操作系统安装
    • 前言:
    • 一、前期准备(所有节点)
      • 1.1所有节点,关闭防火墙规则,关闭selinux,关闭swap交换,打通所有服务器网络,进行ping测试
        • 1.1.1关闭防火墙
        • 1.1.2关闭selinux增强机制
        • 1.1.3配置iptables的ACCEPT规则
        • 1.1.4关闭swap
      • 1.2所有节点,修改各个主机名,并写入所有服务器的hosts中
        • 1.2.1所有节点,给hosts文件,并增加ip映射
      • 1.3所有节点,设置系统参数,调整内核参数,将桥接的 IPV4 流量传递到 iptables 链
      • 1.4所有节点,安装Docker
        • 1.4.1导入 Docker 的软件源 GPG 签名密钥,以确保下载的软件包真实可信
        • 1.4.2设置镜像源
        • 1.4.3安装docker
        • 1.4.4设置系统管理docker命令
        • 1.4.5重新加载服务配置文件,并启动docker
      • 1.5所有节点,配置k8s镜像源
      • 1.6所有节点安装kubeadm,kubelet和kubectl
    • 二、master节点操作(master节点)
      • 2.1初始化master节点
      • 2.2根据日志提示执行以下命令可使用kubectl管理工具
    • 三、node节点操作(所有node节点)
      • 3.1kube join将node节点加入k8s集群
    • 四、安装部署网络插件(master节点上)
      • 4.1calico网络插件
        • 4.1.1部署方式
    • 五、检查各节点健康状态


前言:

kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。

服务器环境

在所有节点上安装Docker和kubeadm
部署Kubernetes Master
部署容器网络插件
部署 Kubernetes Node,将节点加入Kubernetes集群中

搭建一主一从集群
服务器列表:
服务器类型 IP地址

master192.168.0.185
node-1192.168.0.56

一、前期准备(所有节点)

1.1所有节点,关闭防火墙规则,关闭selinux,关闭swap交换,打通所有服务器网络,进行ping测试

全部的服务器都执行以下服务器

1.1.1关闭防火墙

systemctl stop firewalld     
#关闭防火墙

systemctl disable firewalld  
#禁止防火墙启动

1.1.2关闭selinux增强机制

setenforce 0  
#关闭selinux

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
#永久关闭selinux

1.1.3配置iptables的ACCEPT规则

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

1.1.4关闭swap

swapoff -a   
#交换分区必须要关闭

sed -ri 's/.*swap.*/#&/' /etc/fstab	  
#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果

1.2所有节点,修改各个主机名,并写入所有服务器的hosts中

hostnamectl set-hostname master  
#修改主机名

hostnamectl set-hostname node-1

bash   
#每个节点修改完后记得刷新重启加载

1.2.1所有节点,给hosts文件,并增加ip映射

cat >> /etc/hosts << EOF 
10.168.9.184 master 
10.168.9.183 node-1 
EOF
#这里ip必须和前面修改的主机名一致

1.3所有节点,设置系统参数,调整内核参数,将桥接的 IPV4 流量传递到 iptables 链

#调整内核参数

cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

sysctl --system  #加载参数

1.4所有节点,安装Docker

1.4.1导入 Docker 的软件源 GPG 签名密钥,以确保下载的软件包真实可信

sudo rpm --import https://download.docker.com/linux/centos/gpg  #安装依赖

1.4.2设置镜像源

sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
EOF

1.4.3安装docker

yum install -y docker-ce docker-ce-cli containerd.io
#安装docker

1.4.4设置系统管理docker命令

cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF
#使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。
#日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。

1.4.5重新加载服务配置文件,并启动docker

systemctl daemon-reload 
#重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载上方已经让docker归属systemctl管理了。

systemctl restart docker.service
#重启docker
systemctl enable docker.service 
#设置开机自启
docker info | grep "Cgroup Driver"
#显示Cgroup Driver: system为正确

1.5所有节点,配置k8s镜像源

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
#定义kubernetes源

1.6所有节点安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3

systemctl enable kubelet.service  #开机自启kubelet

systemctl start kubelet.service #启动

#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

二、master节点操作(master节点)

2.1初始化master节点

官网参考:
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

kubeadm init \
--apiserver-advertise-address=10.168.9.184 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.21.3 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
【若要重新初始化集群状态:kubeadm reset,然后再进行上述操作】

参数说明

kubeadm init \
--apiserver-advertise-address=10.168.9.184 \ 
#指定master监听的地址,修改为自己的master地址
--image-repository registry.aliyuncs.com/google_containers \ 
#指定为aliyun的下载源,最好用国内的
--kubernetes-version v1.18.0 \
#指定k8s版本,1.18.0版本比较稳定
--service-cidr=10.96.0.0/12 \ 
#设置集群内部的网络
--pod-network-cidr=10.244.0.0/16 
#设置pod的网络
# service-cidr 和 pod-network-cidr 最好就用这个,不然需要修改后面的 kube-flannel.yaml 文件

记得保存好最后的 kubeadm join的信息node节点加入集群需要token!!!
不然要执行生成token

kubeadm token create --print-join-command  
#利用kubeadm命令重新生成token,node 节点加入集群需要token

2.2根据日志提示执行以下命令可使用kubectl管理工具

执行上方初始化master节点后程序会打印提示日志(就是设置环境变量)
kubeconfig官网解释

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#命令的含义:Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令。
#Kubectl 在 $HOME/.kube 目录中寻找一个名为 config 的文件。
#你可以通过设置环境变量 KUBECONFIG 或设置 --kubeconfig 参数指定其它 kubeconfig 文件
#当集群初始化成功后,要使 kubectl 适用于非 root 用户,则需要运行以下命令,这些命令也是 kubeadm init输出的一部分
#即创建.kube目录 -> 拷贝配置文件 -> 用户授权
#当然,如果你是 root 用户,则可以直接添加环境变量:执行export KUBECONFIG=/etc/kubernetes/admin.conf


kubectl cluster-info   
#查看一下是否成功,等待一会儿,同时可以发现像etc,controller,scheduler等组件都以pod的方式安装成功

三、node节点操作(所有node节点)

3.1kube join将node节点加入k8s集群

记得保存初始化master节点的最后打印信息【注意这边要自己的,下面我的只是一个参考!!!

kubeadm join 10.168.9.184:6443 --token ocf65a.xz2z2v5oloxs5pn5 \
> --discovery-token-ca-cert-hash sha256:fd77aa9043c785bf0b2e79fa7293137d56aeef07e5259654b4afa0ce38b74362
#获取前面创建好的token令牌,所有node节点都执行

四、安装部署网络插件(master节点上)

必须安装网络组件否则k8s各个节点都是Noready状态

calico和flannel二选一(本次安装使用的是flannel网路插件
二者不同可以查看官方文档

4.1calico网络插件

选择calico网络插件版本:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
calico网络插件:
https://docs.tigera.io/v3.9/manifests/tigera-operator.yaml

4.1.1部署方式

kubectl apply -f https://docs.projectcalico.org/v3.20/manifests/calico.yaml
# 在k8s中安装calico
kubectl get pods --all-namespaces -w 
# 确认一下calico是否安装成功状态是否正常

五、检查各节点健康状态


kubectl get cs 
#查询master是否正常 
#若状态为unhealthy 
vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
#将- --port=0注释掉


kubectl get pods -A 
#检查容器状态节点状态

kubectl get nodes
#查询node节点是否ready 

在这里插入图片描述

到此部署结束

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

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

相关文章

Java 工程师不同阶段的发展路线

Java作为一种广泛应用于企业级应用程序的编程语言&#xff0c;已成为全球最流行的编程语言之一。在Java领域&#xff0c;Java高级工程师是一个非常有前途的职业&#xff0c;随着互联网和移动应用的不断发展&#xff0c;Java高级工程师的需求量也在不断增加。在这篇文章中&#…

Node.js 学习系列(二) —— 创建一个应用

Node.js 应用由三部分组成&#xff1a; &#xff08;一&#xff09;require 指令&#xff1a; 在 Node.js 中&#xff0c;使用 require 指令来加载和引入模块&#xff0c;引入的模块可以是内置模块&#xff0c;也可以是第三方模块或自定义模块。 语法格式&#xff1a; cons…

Qt+QtWebApp开发笔记(一):QtWebApp介绍、下载和搭建基础封装http轻量级服务器Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130631547 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

MySQL学习---16、触发器

1、触发器 MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样&#xff0c;都是嵌入到MySQL服务器的一段程序。 触发器是由某个事件来触发某个操作&#xff0c;这些事件包括Insert、Update、Delete事件。所谓事件就是指用户的动作或者触发某项行为。如过定义了触发…

杂记——24.HTML中空格的写法

前几天写项目时&#xff0c;突然对HTML中空格的写法感兴趣&#xff0c;于是搜了一下&#xff0c;现在对其进行总结 HTML不是一种编程语言&#xff0c;而是一种超文本标记语言 (markup language)&#xff0c;是网页制作所必备的。超文本”就是指页面内可以包含图片、链接&#…

PDF文件转换工具Solid Converter PDF 10.1版本在Win10系统的下载与安装配置教程

目录 前言一、Solid Converter PDF安装二、使用配置总结 前言 Solid Converter PDF是一种PDF文件转换工具&#xff0c;可以将PDF文件转换为Microsoft Word、Excel、PowerPoint等格式。它还支持批量转换和OCR&#xff08;光学字符识别&#xff09;功能。 Solid Converter PDF的…

NIO基础

NIO 在学习Netty之前&#xff0c;我们需要先了解一下NIO&#xff0c;以便更好的学习Netty NIO是non-blocking io&#xff0c;也就是非阻塞IO 1.三大组件 1.1 channel & Buffer channel 有一点类似于 stream&#xff0c;它就是读写数据的双向通道&#xff0c;可以从 ch…

【YOLO系列】YOLO v3(网络结构图+代码)

文章目录 网络结构YOLO v3YOLOv3-SPP 多尺度预测损失函数参考 最近在研究YOLO系列&#xff0c;打算写一系列的YOLO博文。在YOLO的发展史中&#xff0c;v1到v3算法思想逐渐完备&#xff0c;后续的系列也都以v3为基石&#xff0c;在v3的基础上进行改进&#xff0c;所以很有必要单…

KD600A变频抗干扰精密介质损耗测量仪

一、产品概述 KD600A变压器介质损耗测试仪是发电厂、变电站等现场自动测量各种高压电力设备介损正切值及电容量的高精度仪器。由于采用了变频技术能保证在强电场干扰下准确测量。仪器采用中文菜单操作&#xff0c;微机自动完成测量。 该仪器同样适用于车间、试验室、科研单位测…

映射及有关概念

映射的概念:有两个集合A,B&#xff0c;若A的任何元素都有唯一的B中元素与之对应&#xff0c;B中元素与之对应的称为像&#xff0c;A中对应的元素称为原像 一个集合也有像&#xff0c;定义为各自像的集合 B中集合也有原像&#xff0c;定义为各自原像的集合 虽然采用了f-1的符号&…

端口隔离、MAC地址表项、MAC地址漂移防止与检测

目录 前言 端口隔离 MAC地址表项 端口安全 MAC地址漂移检测 前言 目前网络中以太网技术的应用非常广泛。然而&#xff0c;各种网络攻击的存在&#xff08;例如针对ARP、DHCP等协议的攻击&#xff09;&#xff0c;不仅造成了网络合法用户无法正常访问网络资源&#xff0c;…

【案例教程】山洪径流过程模拟及洪水危险性评价技术

GIS水文分析&#xff08;ArcHydro、Spatial Anlysist等模块&#xff09;是流域水文模拟建模的重要工具&#xff0c;能够自动提取及计算流域边界、河网水系、流向、汇流时间和其它流域特征参数。美国陆军工程兵团开发的开源、免费Hec-RAS软件具有强大的空间数据分析与整合功能、…

每日学术速递5.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.VideoChat: Chat-Centric Video Understanding 标题&#xff1a;VideoChat&#xff1a;以聊天为中心的视频理解 作者&#xff1a;KunChang Li, Yinan He, Yi Wang, Yizhuo Li, Wen…

计算机网络基础知识(五)——什么是TCPUDP协议?图文并茂的方式对两大传输层协议进行从头到尾的讲解

文章目录 01 | &#x1f4d5; 什么是 T C P &#xff1f; \color{red}{什么是TCP&#xff1f;} 什么是TCP&#xff1f;&#x1f4d5;特点三次握手 && 四次挥手超时重传滑动窗口 02 | &#x1f4d9; 什么是 U D P &#xff1f; \color{orange}{什么是UDP&#xff1f;} 什…

1. 链表

b站懒猫数据结构课程笔记&#xff1a;https://www.bilibili.com/read/cv8013121?spm_id_from333.999.0.0 一、链表的概念 单链表&#xff1a;线性表的链接存储结构 单链表存储特点&#xff1a; 逻辑次序和物理次序不一定相同 元素之间的逻辑关系用指针表示 举例&#xff1a…

PASCAL VOC数据集

一、前言 之前寒假好像就学了&#xff0c;但是没有记笔记&#xff0c;现在看来还是得记笔记&#xff0c;都忘得差不多了啊。 二、数据集的介绍 2.1数据集背景 分类类别 2.2数据集文件结构&#xff1a; 2.3文件夹 2.3.1Annotations文件夹 对于标注文件Annotations&#xff1a;里…

基于SpringBoot框架的程序开发步骤

SpringBoot简介 1. 入门案例问题导入1.1 入门案例开发步骤1.2 基于SpringBoot官网创建项目1.3 SpringBoot项目快速启动 2. SpringBoot概述问题导入2.1 起步依赖2.2 辅助功能 1. 入门案例 问题导入 SpringMVC的HelloWord程序怎么写&#xff1f; SpringBoot是由Pivotal团队提供…

死锁、生产者和消费者问题

目录 生产者和消费者问题 死锁的概念 内存的基础知识 内存管理的概念 覆盖与交换 介绍一下PCB 连续分配管理方式​编辑 生产者和消费者问题 死锁的概念 什么是死锁 进程死锁、饥饿、死循环的区别 死锁产生的必要条件 什么时候会发生死锁 死锁的处理策略 内存的基础知识 内存…

微三云润秋带你解析商城分销系统

管理大师德鲁克曾说过&#xff1a;当今企业间的竞争&#xff0c;不是产品之间的竞争&#xff0c;而是商业模式之间的竞争。创业不只是项目选择重要&#xff0c;好的商业模式同样重要&#xff0c;如果没有好的商业模式&#xff0c;企业将会被淘汰。 今天我们要聊的这个商城就有点…

怎样设置CRM目标?有什么作用?

实施CRM系统可以帮助企业提高客户保留率&#xff0c;增加收入&#xff0c;并推动业绩增长。然而&#xff0c;在实施CRM系统之前&#xff0c;必须设定明确的目标&#xff0c;与企业的整体战略保持一致。在这篇文章中&#xff0c;我们来讨论实施CRM目标是什么&#xff0c;如何设定…