您的位置:首页 > 健康 > 美食 > k8s学习

k8s学习

2025/4/22 23:53:37 来源:https://blog.csdn.net/shangxianjiao/article/details/140881909  浏览:    关键词:k8s学习

一个节点 是 一个服务器
在这里插入图片描述
k8s依赖docker

在这里插入图片描述

部署有报错,看报错日志,先不去百度,可能是之前的事情没有做
在这里插入图片描述
在这里插入图片描述

为什么要用k8s

docker上MySQL不运行了,怎么办
弹性扩容,缩容,流量暴增,减少,
在这里插入图片描述
docker没有弹性扩容,缩容
在这里插入图片描述

k8s应用场景有哪些

练习,建议3台服务器
一个master 多个node
kubernetes介绍
Kubernetes是Google在2014年开源的一款容器集群系统,简称k8s
Kubernetes用于容器化应用程序部署、扩展和管理,目标是让容器化应用简单高效
官方网站:https://kubernetes.io/
官方文档:https://kubernetes.io/zh/docs/home/
K8S是一组服务器的集群,对节点(node)上的容器进行管理。
主要提供了如下的主要功能:
1.自我修复:一旦某-个容器崩溃,能够在1秒中左右迅速启动新的容器
2.弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整
3.服务发现:服务可以通过自动发现的形式找到它所依赖的服务
4.负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡
5.版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本
6.存储编排:可以根据容器自身的需求自动创建存储卷

1.自我修复:一旦某-个容器崩溃,能够在1秒中左右迅速启动新的容器,在k8s集群中
如果某个容器宕机了,会迅速启动一台新的nginx容器。
2.弹性伸缩:在k8s集群中有4台nginx容器,总共抗并发4000 如果突然并发量堆积6000-8000 迅速在k8s集群中 扩容容器 如果流量下降之后就会对我们的容器缩容
3.负载均衡:在k8s集群中 有n多个容器组成集群 通过负载均衡策略来实现访问
4.版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本 灰度发布
k8s 分成Master 负责整个k8s集群管理 node节点(工作)运行nginx
节点—服务器

先在服务器上安装k8s环境
自我修复,设定4个nginx,一个宕机了,k8s自动起一个
弹性伸缩,流量大了,自动调整
负载均衡,自动形式轮询访问nginx
k8s做灰度发布,不用写代码

k8s架构设计原理

kubernetes集群主要由控制节点(Master)、工作节点(Node)组成
Master负责集群管理,决定nginx到底在哪个节点
工作节点(Node)真正运行nginx
节点是一个独立服务器
运行nginx,在master上运行命令

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

k8s集群环境演示架构设计原理

最小节点是pod

运行nginx,要计算。controller通知给要工作的节点node,node工作节点运行一个docker容器。变成pod
一个pod里面可以有多个容器,
访问nginx,node节点上的kube
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

k8s搭建环境

不是单机
必须一个master,2个node,节点是服务器
master是分配控制计算,

虚拟机克隆

在这里插入图片描述

注意:克隆了之后 记得一定要修改该linux服务器 mac地址

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
IP没有变就MAC多生成几次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

环境准备
1.一个主多个工作节点: 一台Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境
2.多主节点多工作节点:多台Master节点和多台Node节点,搭建麻烦,安全性高,适合用于生产环境
程序员初学练习,采用一主多从即可
ip地址 类型 操作系统 服务配置
192.168.75.163 Master Centos7.6 2核CPU 2G内存 20G硬盘
192.168.75.164 Node1 Centos7.6 2核CPU 2G内存 20G硬盘
192.168.75.165 Node2 Centos7.6 2核CPU 2G内存 20G硬盘
使用 XshellPortable.exe 远程连接到这三台服务器

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

初始化环境

在这里插入图片描述

需要在这三台服务器上执行以下操作:

1.检查操作系统的版本

#此方式下安装kubernetes集群要求Centos版本要在7.5或之上
cat /etc/redhat-release

2.主机名解析

为了方便后面集群节点间的直接调用,在这配置一下主机名解析, 企业中推荐使用内部DNS服务器
#主机名成解析编辑三台服务器的/etc/hosts文件,添加下面内容
vi /etc/hosts

改对了再复制
192.168.75.173 master
192.168.75.167 node1
192.168.75.175 node2

在这里插入图片描述
在这里插入图片描述
让后节点之间相互ping下
ping master
ping node1
ping node2

在这里插入图片描述
之后的不能错

3.时间同步

kubernetes要求集群中的节点时间必须精确一致, 这里直接使用chronyd服务从网络同步时间。
企业中建议配置内部的时间同步服务器


yum install -y chrony
systemctl start chronyd
systemctl enable chronyd

在这里插入图片描述

4.禁用iptables和firewalld服务

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则
关闭防火墙,不然开放端口麻烦

# 1关闭firewalld服务
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld# 2关闭iptables服务
[root@master ~]# systemctl disabled iptables
[root@master ~]# systemctl disable iptables

在这里插入图片描述

5.关闭selinux 千万不能错

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

在这里插入图片描述

vi /etc/selinux/config 文件,修改SELINUX的值为disabled
#注意修改完毕之后需要重启 linux服务
SELINUX=disabled

在这里插入图片描述

改成

在这里插入图片描述

在这里插入图片描述

6.禁用swap分区

swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用
启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备
但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

#编辑分区配置文件/etc/fstab,注释掉swap分区一行
vi /etc/fstab

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.修改Linux内核参数

#修改linux的内核参数,添加网桥过滤和地址转发功能
vi /etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
#重新加载配置
[root@mayikt ~]# sysctl -p
#加载网桥过滤模块
[root@mayikt ~]# modprobe br_netfilter
#查看网桥过滤模块是否加载成功
[root@mayikt ~]# lsmod  | grep br_netfilter

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8.配置ipvs功能

在kubernetes中service有两种代理模型,-种是基于iptables的, - -种是基于ipvs的
两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块
k8s service 会使用 ipvs/iptables

# 1安装ipset和ipvsadm
[root@mayikt ~]# yum install ipset ipvsadmin -y# 2添加需要加载的模块写入脚本文件
[ root@mayikt ~]# cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF# 3为脚本文件添加执行权限
[root@mayikt ~]# chmod +x /etc/sysconfig/modules/ipvs.modules# 4执行脚本文件
[root@mayikt ~]# sh +x /etc/sysconfig/modules/ipvs.modules# 5查看对应的模块是否加载成功
[root@mayikt ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

在这里插入图片描述

9.重启Linux系统

reboot

在这里插入图片描述
在这里插入图片描述

安装kubernetes

安装docker

# 1切换镜像源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo如果报错 -bash: wget: 未找到命令
则执行: yum -y install wget
# 2查看当前镜像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates# 3安装特定版本的docker-ce
#指定--setopt=obsoletes=0,否则yum会自动安装更高版本
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y# 4添加一个配置文件 阿里云加速镜像
[root@master ~]# mkdir /etc/docker
[ root@master ~]# cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [ "https://66mzqrih.mirror.aliyuncs.com"]
}
EOF# 5启动docker
[root@master ~]# systemctl start docker
[root@master ~]# systemctl enable docker# 6检查docker状态和版本
[root@master ~]# docker --version

在这里插入图片描述

在这里插入图片描述

安装kubernetes组件

#1.由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
#2.vi  /etc/yum.repos.d/kubernetes.repo,添加下面的配置
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg#3.安装kubeadm、kubelet和kubectl
[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
#4.配置kubelet的cgroup
#5.vi /etc/sysconfig/kubelet,添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"#6.设置kubelet开机自启
[root@master ~]# systemctl enable kubelet

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com