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

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 

在这里插入图片描述

到此部署结束

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL语法

创建基本表 创建基本表要对表进行命名&#xff0c;定义表的每个列&#xff0c;定义表的完整性约束条件&#xff0c;我们使用CREATE TABLE语句创建基本表 CREATE TABLE <表名> (<列名> <数据类型> [DEEAULT<缺省值>] [列级约束定义], <列名> &l…

Netty实战(一)

Nett的概念及体系结构 第一章 Java网络编程1.1 Java NIO1.2 选择器 第二章 Netty是什么2.1 Netty简介2.2 Netty的特性2.2.1 设计2.2.2 易于使用2.2.3 性能2.2.4 健壮性2.2.5 安全性2.2.6 社区驱动 2.3 Netty的使用者2.4 异步和事件驱动2.4.1 异步2.4.2 异步和伸缩性 第三章 Net…

Qt文件系统源码分析—第一篇QFile

深度 本文主要分析Windows平台&#xff0c;Mac、Linux暂不涉及 本文只分析到Win32 API/Windows Com组件/STL库函数层次&#xff0c;再下层代码不做探究 本文QT版本5.15.2 类关系图 QTemporaryFile继承QFile QFile、QSaveFile继承QFileDevice QFileDevice继承QIODevice QIODev…

LayerZero有何发展潜力?空投热潮和大额融资双重加持

前言 近期Arbitrum的如愿空投再次点燃了市场「刷空投」的热情&#xff0c;除了ZK系的zkSync、Starknet及Scroll&#xff0c;也有部分用户将注意力投向了估值30亿美元的LayerZero。而 LayerZero刚刚完成的1.2亿美元B轮融资也让其市场热度持续攀升&#xff0c;在「空投热潮」及「…

华为OD机试真题 Java 实现【数字加减游戏】【2023Q1 200分】

一、题目描述 小明在玩一个数字加减游戏&#xff0c;只使用加法或者减法&#xff0c;将一个数字s变成数字t。 每个回合&#xff0c;小明可以用当前的数字加上或减去一个数字。 现在有两种数字可以用来加减&#xff0c;分别为a&#xff0c;其中b没有使用次数限制。 请问小明…

dwg格式转换pdf,教大家几个简单方法

dwg格式转换pdf&#xff0c;今天教大家几个简单方法吧。因为有很多小伙伴私信小编&#xff0c;询问关于CAD格式转换的问题。我们知道&#xff0c;dwg是CAD格式的一种&#xff0c;只能使用CAD软件进行打开&#xff0c;这非常不方便。特别是在需要在手机或其他平台查看时&#xf…

第12章:视图

一、视图 1.常见的数据库对象 ①表table&#xff1a;表是存储数据的逻辑单元&#xff0c;行和列形式存在。列是字段&#xff0c;行是记录。 ②数据字典&#xff1a;系统表&#xff0c;存放数据库相关信息的表。系统表的数据通常是数据库系统维护。 ③约束constraint&#x…

PPT背景图片怎么设置?4个详细教程在这!

案例&#xff1a;PPT背景图片怎么设置&#xff1f; 【因为论文答辩&#xff0c;最近需要制作PPT&#xff0c;昨晚之后感觉有点单调&#xff0c;我想设置一个背景图片&#xff0c;让我的PPT看起来更有风格&#xff0c;请问大家是怎么设置PPT背景图片的呢&#xff1f;】 PPT背景…

软件测试技术课程:软件测试流程

软件测试流程如下&#xff1a; 测试计划测试设计测试执行 单元测试集成测试确认测试系统测试验收测试回归测试验证活动 测试计划 测试计划由测试负责人来编写&#xff0c;用于确定各个测试阶段的目标和策略。这个过程将输出测试计划&#xff0c;明确要完成的测试活动&#x…

ipa怎么装到苹果手机

下面介绍ipa怎么装到苹果手机&#xff1f; 方法/步骤 进入手机上的设置&#xff0c;如下图所示&#xff1a; 在设置页面中&#xff0c;点击进入通用&#xff0c;如下图所示&#xff1a; 进入通用页面后&#xff0c;点击页面上的描述文件&#xff0c;如下图所示&#xff1a; …

【大数据】Hadoop总结

本文对于Hadoop中的HDFS和MapReduce的相关面试重点进行了总结&#xff0c;下篇将介绍调优、数据倾斜等进阶知识。 Hadoop总结 一、概述1. Hadoop特性2. HDFS结构HDFS 架构 二、HDFS分布式文件系统1 概述2. HDFS存储数据架构图NameNodeDataNode 3 HDFS优点4 HDFS缺点&#xff08…

MySQL:存储过程与函数、视图

一、学习目标 掌握如何创建存储过程掌握如何创建存储函数熟悉变量的使用方法熟悉如何定义条件和处理程序了解光标的使用方法掌握流程控制的使用掌握如何调用存储过程和函数熟悉如何查看存储过程和函数掌握修改存储过程和函数的方法熟悉如何删除存储过程和函数掌握创建存储过程…

卷麻了,新来的00后实在是太卷了...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

SpringBoot拦截器获取Request的body数据

1. 场景 自定义Token后&#xff0c;需要在拦截器中进行token验证。在验证的过程中需要读取HttpServletRequest的body部分数据进行验证。 2. 存在问题 如果直接配置拦截器进行urlPatterns拦截&#xff0c;并进行参数验证&#xff0c;在拦截器中获取request的输入流&#xff0c…

网易云商·七鱼智能客服自适应 ProtoStuff 数据库缓存实践

需求背景 目前&#xff0c;网易云商七鱼智能客服数据库缓存使用了 spring-data-redis 框架&#xff0c;并由自研的缓存组件进行管理。该组件使用 Jackson 框架对缓存数据进行序列化和反序列化&#xff0c;并将其以明文 JSON 的形式存储在 Redis 中。 这种方式存在两个问题&…

Servlet技术及代码实现

Servlet概念 Servlet是JavaEE规范之一&#xff0c;规范指的就是接口。Servlet是JavaWeb三大组件之一&#xff0c;三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个java小程序&#xff0c;它可以接收客户端发送过来的请求&#xff0c…

Redis高可用--持久化

在Web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准实在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;除了保证提提供正常服务&a…

绝地求生 压枪python版

仅做学习交流&#xff0c;非盈利&#xff0c;侵联删&#xff08;狗头保命) 一、概述 1.1 效果 总的来说&#xff0c;这种方式是通过图像识别来完成的&#xff0c;不侵入游戏&#xff0c;不读取内存&#xff0c;安全不被检测。 1.2 前置知识 游戏中有各种不同的枪械&#x…

今天面了个京东拿28K 出来的,让我见识到了测试界的天花板

今年的春招基本已经结束了&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的软件测试面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#…

【C生万物】 指针和数组笔试题汇总 (下)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《C生万物 | 先来学C》&#x1f448; 前言&#xff1a; 承接上文&#xff0c;继续进行指针和数组的练习。 目录 Part2:指针笔试题 1.做题 …