当前位置: 首页 > news >正文

【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  
#关闭selinuxsed -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-1bash   
#每个节点修改完后记得刷新重启加载

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
EOFsysctl --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.3systemctl enable kubelet.service  #开机自启kubeletsystemctl 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.confkubectl 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.lryc.cn/news/67844.html

相关文章:

  • 异常数据检测 | Python实现ADTK时间序列异常数据检测
  • 软件测试之jmeter性能测试让你打开一个全新的世界
  • Redis数据结构——动态字符串、Dict、ZipList
  • ipad可以用别的品牌的手写笔吗?便宜的ipad电容笔
  • 【数据库】关于SQL SERVER的排序规则的问题分析
  • 算法修炼之练气篇——练气十三层
  • ChatGPT:AI不取代程序员,只取代的不掌握AI的程序员
  • 数字革命下的产品:百数十年变迁的启示与思考。
  • 部门新来一00后,给我卷崩溃了...
  • 使用Spring Boot和Docker构建可伸缩的微服务架构,应对增长的业务需求
  • 计算机组成原理基础练习题第四章
  • 浅谈Gradle构建工具
  • 如何获取和制作免费的icon图标素材
  • 【MySQL】MySQL索引--聚簇索引和非聚簇索引的区别
  • 如何使用 SVG.js 中的一些相关方法来创建、设置和操作 image 元素
  • 展会进行时!5月16-18日箱讯与您相约中国航交会
  • CMake:递归检查并拷贝所有需要的DLL文件
  • python常见问题及解决方案
  • JUC之Synchronized与Lock
  • 动态规划理论基础
  • Redis的数据类型
  • vue3鼠标经过显示按钮
  • 【2023华为OD笔试必会25题--C语言版】《18 最短木板长度》——数组
  • yolov5车道线检测+测距(碰撞检测)
  • 微服务学习笔记--(Gateway网关)
  • QML插件的创建及调用
  • 数据结构学习分享之树的介绍
  • MySQL数据库基础2
  • AutoSAR PNC和ComM
  • Android studio Camera2实现的详细流程