集群篇-k8s介绍

2023-11-13

@[TOC]集群篇-k8s介绍

一、集群业务介绍

集群篇: 服务器的搭建、集群的管理、运维

1.集群业务介绍

在这里插入图片描述
集群:k8s及自动化部署,服务器的预警监控功能

二、k8s 集群部署

K8S部署&DevOps ,百度云地址 提取码 1111

1.k8s 快速入门

1).Kubernetes 是什么?

Kubernetes 简称 k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。
中文官网:https://kubernetes.io/zh/
中文社区:https://www.kubernetes.org.cn/
官方文档:https://kubernetes.io/zh/docs/home/ 笔记的版本是1.7.1
社区文档:http://docs.kubernetes.org.cn/

a.部署方式的进化

在这里插入图片描述
https://kubernetes.io/zh/docs/concepts/overview/
在这里插入图片描述

b. Kubernetes的功能:

服务发现和负载均衡、存储编排、自动部署和回滚、自动完成装箱计算、自我修复、密钥与配置管理

它仅仅是帮我们部署、管理集群的

c. Kubernetes 不是什么

不限制支持的应用程序类型
不部署源代码、也不构建你的应用程序
不提供应用程序级别的服务作为内置服务
不要求日志记录、监视或警报解决方案
不提供或不要求配置语言/系统
不提供也不采用任何全面的机器配置、维护、管理或自我修复系统
Kubernetes 不仅仅是一个编排系统,实际上它消除了编排的需要

d. Kubernetes 可以做的工作

Kubernetes :调度、自动恢复、水平伸缩

在这里插入图片描述
调度:服务的调度
自动恢复:发现某个服务器(节点)不响应,Kubernetes 可以自动把应用转移恢复到另外一个服务器上,从另一服务器上拉起这个应用。那么,这个应用还能照常工作。
水平伸缩:比如黄色应用太忙,超过了业务负载。Kubernetes 检查到此状态,可以将这个非常忙的应用直接复制到多台服务器。所以可以自动伸缩。包括如果应用闲了,不需要这么多资源,可以把多余应用剔除掉,保持最新的状态。

Kubernetes 就是一个分布式编排系统,管理分布式系统的。

2).架构

Kubernetes 组件
Master 组件:主组件
Node 组件:节点组件

Kubernetes 最小单元是一个pod,多个pod组成service。每一个pod就是多个容器。

1、整体主从方式

在这里插入图片描述

2、Master 节点架构

在这里插入图片描述

3、Node 节点架构

在这里插入图片描述

3).概念

在这里插入图片描述

2、k8s 集群安装

2.1、环境准备

1、准备工作

网卡修改: 169.254.116.151 到 192.168.56.1
子网掩码修改:255.255.0.0 到 255.255.255.0
在这里插入图片描述
保存到 D:\software\VirtualBox VMs 在这里插入图片描述

2.启动三个虚拟机

在.高可用集群篇(架构师提升篇)\资料源码\docs\code下找到k8s文件夹,
k8s 百度云地址 提取码 1111https://pan.baidu.com/s/1e-WtkRjgS7UXVBWgYyuDcw

a.启动三个虚拟机

在k8s文件夹,进入cmd模式
创建3个虚拟机:

vagrant up 

在这里插入图片描述

创建成功:查看结果
在这里插入图片描述
ip为
192.168.56.100
192.168.56.101
192.168.56.102

b.开启 root 的密码访问权限。

使用连接虚拟机:
cmd执行命令

 vagrant ssh k8s-node1

切换到root,密码vagrant

su root
密码:vagrant

开启 root 的密码访问权限

vi /etc/ssh/sshd_config
修改 PasswordAuthentication yes
重启服务 
service sshd restart

重复以上步骤:
执行2次exit退出,在执行命令:
修改k8s-node2、k8s-node3

c.使用xshell连接虚拟机

在这里插入图片描述

d.设置虚拟机网络环境- - -NET网络网卡

查看默认网卡
ip route show,默认为eth0
查看ip

ip addr 

在这里插入图片描述
不使用网络地址转换,怎么修改??
在这里插入图片描述
怎么修改?
创建NET网络网卡
在这里插入图片描述
为每个虚拟机 配置网络为NET网络
在这里插入图片描述
测试
虚拟机相互ping,再ping外网如百度

3.设置 linux 环境(三个节点都执行)
1).关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
2).关闭 selinux:(selinux为linux默认的安全策略)
sed -i 's/enforcing/disabled/' /etc/selinux/config

禁掉当前会话

setenforce 0
3).关闭 swap:(关闭内存交换)

swapoff -a 临时

永久

sed -ri 's/.*swap.*/#&/' /etc/fstab 

验证,swap 必须为 0;

free -g

在这里插入图片描述

4).添加主机名与 IP 对应关系
  • 通过hostname,查看主机名称
  • 通过ip addr,查看eth0的ip
    在这里插入图片描述
    即/etc/hosts 文件
    vi /etc/hosts
10.0.2.15 k8s-node1
10.0.2.22 k8s-node2
10.0.2.23 k8s-node3

ip 为ip addr,获取node1、node2、node3的ip
在这里插入图片描述

5).将桥接的 IPv4 流量传递到 iptables 的链:三个虚拟机都执行
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

在这里插入图片描述

让系统应用此规则
sysctl --system
在这里插入图片描述

6).备份虚拟机

三个虚拟机都备份
在这里插入图片描述

2.2、所有节点 安装 Docker、kubeadm、kubelet、kubectl

Docker:Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装 Docker
kubeadm:使用kubeadm,使集群部署简单
kubelet:kubelet是每一个node节点上的代理,帮我们干活。
kubectl:通过命令行来操作Kubernetes集群

1、安装 docker
1)、卸载系统之前的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2)、安装 Docker-CE

安装必须的依赖

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

设置 docker repo 的 yum 位置

sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

安装 docker,以及 docker-cli

sudo yum install -y docker-ce docker-ce-cli containerd.io
问题:找不到docker-ce docker-ce-cli containerd.io

在这里插入图片描述

解决:上面问题

更换一下镜像仓库,更换成阿里云镜像仓库

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

重新运行安装Docker命令

 sudo yum -y install docker-ce docker-ce-cli containerd.io
安装docker 成功:

在这里插入图片描述

3)、配置 docker 加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors":
["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
问题:重启docker失败

执行sudo systemctl restart docker,失败 在这里插入图片描述

解决:修改daemon.json

编辑/etc/docker/daemon.json

 vi /etc/docker/daemon.json

添加:

{"registry-mirrors":["https://registry.docker-cn.com"]}

再次执行----成功

sudo systemctl daemon-reload
sudo systemctl restart docker

自己的阿里云加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://e7fl7xak.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

测试:
docker 安装成功

docker ps

在这里插入图片描述

4)、启动 docker & 设置 docker 开机自启
systemctl enable docker

在这里插入图片描述

2、添加阿里云 yum 源
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
3、安装 kubeadm,kubelet 和 kubectl
yum list|grep kube
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3

在这里插入图片描述

systemctl enable kubelet
systemctl start kubelet

在这里插入图片描述

2.3、部署 k8s-master

1、master 节点初始化
1).修改node1为master,使用 ip addr 获得它的默认网卡eth0的ip

在这里插入图片描述

2).按照我们的 images.sh 先拉取镜像

找到k8s文件夹,把k8s文件夹上传到node1的root下

切换达到k8s目录
修改master_images.sh的权限

chmod 777 master_images.sh

在这里插入图片描述
执行master_images.sh,下载镜像
./master_images.sh
在这里插入图片描述
查看下载的镜像
docker images
在这里插入图片描述

3).master 节点初始化
kubeadm init \
 --apiserver-advertise-address=10.0.2.15 \
 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
 --kubernetes-version v1.17.3 \
 --service-cidr=10.96.0.0/16 \
 --pod-network-cidr=10.244.0.0/16 

10.0.2.15 是node1的地址,ip addr获得它eth0的ip

a.master 节点初始化 失败

k8s报错:this Docker version is not on the list of validated versions: 20.10.3. Latest validated version: 19.03,
那就是版本过高了,没有k8s要求就默认装了。

https://www.jianshu.com/p/3178f20ee792
安装了docker 内核,

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt

cat /boot/grub2/grub.cfg |grep menuentry

查看可用内核
在这里插入代码片
设置开机从新内核启动
grub2-set-default “CentOS Linux (5.4.144-1.el7.elrepo.x86_64) 7 (Core)”
查看内核启动项
grub2-editenv list

重启系统使内核生效
reboot
查看内核版本是否生效
uname -r

systemctl start docker.service

kubeadm init \
 --apiserver-advertise-address=10.0.2.15 \
 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
 --kubernetes-version v1.17.3 \
 --service-cidr=10.96.0.0/16 \
 --pod-network-cidr=10.244.0.0/16 

由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址。可以手动
按照我们的 images.sh 先拉取镜像,
地址变为 registry.aliyuncs.com/google_containers 也可以。
科普:无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配 IP
地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。
拉取可能失败,需要下载镜像。
运行完成提前复制:加入集群的令牌
在这里插入图片描述

a.To start using your cluster, you need to run the following as a regular user

执行命令

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

在这里插入图片描述

b.You should now deploy a pod network to the cluster.

Run “kubectl apply -f [podnetwork].yaml” with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

c.Then you can join any number of worker nodes by running the following on each as root:

等会在node2,node3执行它,把他加入node1节点,即把node1作为master,node2、node3作为slaver节点(从节点)
保存它,

kubeadm join 10.0.2.15:6443 --token 1f6h2p.750s27k40diyvf14 \
    --discovery-token-ca-cert-hash sha256:161be0beb9dd6f80a02f4bd070703b80fcaf9201e880b80855d3a79f0df59a6e

2.4、部署 k8s-master、安装 Pod 网络插件(CNI)

直接使用k8s提供的kube-flannel.yml

应用flannel网络
kubectl apply -f kube-flannel.yml
在这里插入图片描述
获取所有名称空间
kubectl get ns
在这里插入图片描述
获取所有名称空间的pods
kubectl get pods --all-namespaces
在这里插入图片描述
获取kube的使用节点,
kubectl get nodes
在这里插入图片描述

1).把其他节点添加到master

其他节点,如node2,node3,

在node2,node3,执行
注意:ip为node1的eth0的ip,命令为2.3的1的3)的c的结果

kubeadm join 10.0.2.15:6443 --token blcnxp.dephwp5eapch86zm --discovery-token-ca-cert-hash sha256:e7e9d8043e69eb9fb010b3140c53d2b3c437837c002b7e1a3b1dc5947dad47a8

在这里插入图片描述

问题:添加节点时,token 过期怎么办

在node1执行
kubeadm token create --print-join-command
kubeadm token create --ttl 0 --print-join-command
获得一串代码
在这里插入图片描述
再node2、node3等其他节点执行,把节点添加到node1的master里
在这里插入图片描述

问题:把其他节点添加到master,失败

看master初始化失败的内容,2.3 --> 1—>3)------>a
给每个slaver安装内核,
启动docker
再运行

kubeadm join 10.0.2.15:6443 --token fw3if5.20rmsj77y5kmqrgv     --discovery-token-ca-cert-hash sha256:161be0beb9dd6f80a02f4bd070703b80fcaf9201e880b80855d3a79f0df59a6e 
解决: k8s节点处于 Init:ImagePullBackOff

在这里插入图片描述

K8S应用FLANNEL失败解决INIT:IMAGEPULLBACKOFF

下载flannel:v0.12.0-amd64导入到docker中
可以去https://github.com/coreos/flannel/releases官方仓库下载镜像
在这里插入图片描述
把他放到 master,slaver1,slaver2的root下
加载它

docker load < flanneld-v0.11.0-amd64.docker

在这里插入图片描述
,等一会后,再看master,节点全为running

docker images
 kubectl get pod -n kube-system

在这里插入图片描述

监控 pod 进度

在master即node1执行,监控 pod 进度

 kubectl get pod -n kube-system -o wide 

等 3-10 分钟,完全都是 running 以后使用 kubectl get nodes 检查状态
在这里插入图片描述

查看节点初始化状态

查看pod状态
kubectl get pod -n kube-system -o wide
在这里插入图片描述
查看节点初始化状态
如kube-flannel-ds-amd64-89z7w
kubectl describe pod kube-flannel-ds-amd64-89z7w -n kube-system

可以看到,还在拉取镜像。。。
在这里插入图片描述

查看master的所有节点

在master即node1,可以查看添加到master的所有节点

 kubectl get nodes

在这里插入图片描述
当状态时ready,说明集群环境搭建成功

初始化master失败,
找不到kubeadm 的版本

在这里插入图片描述

借鉴

1

2

3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集群篇-k8s介绍 的相关文章

随机推荐

  • ThreadLocal的学习

    ThreadLocal叫做线程变量 意思是ThreadLocal中填充的变量属于当前线程 该变量对其他线程而言是隔离的 也就是说该变量是当前线程独有的变量 ThreadLocal为变量在每个线程中都创建了一个副本 那么每个线程可以访问自己内
  • MVC在Web系统中的模式与应用

    摘要 面向对象的设计模式是经验的总结 MVC思想是原先用于构建用户界面的 这篇文章主要论述了如何在新的Web应用领域中使用设计模式和MVC架构 文章首先介绍了设计模式的概念和特点 以及MVC架构的设计思想 并分析了MVC架构中包含的几种主要
  • 基于对象语言

    所谓的基于对象语言 指的是在程序的内部已经为用户提供好若干个对象 用户直接使用这些对象即可 如 javascript
  • RSA算法的数论原理与实现

    RSA算法的数论原理与实现 RSA算法是一种常用的非对称加密算法 能够确保数据的安全性和完整性 其基本原理是利用大素数的乘积进行加密和解密操作 而且在目前的计算机领域中 RSA算法被广泛应用于各种网络通信和数据传输中 一 数论知识和原理 质
  • 电脑预览,电脑怎么预览psd格式?

    经常使用PS的朋友们都知道Photoshop文档的默认格式是psd格式 可是在电脑上可能不能像jpg图片一样显示缩略图预览 遇到这种情况我们该怎么办 要是电脑上并没有安装PS软件又该怎么预览 下面我们就一起来看看哪些解决方法 步骤如下 方法
  • Mysql中having语句与where语句的用法与区别

    分析 回答 我们在写sql语句的时候 经常会使用where语句 很少会用到having 其实在mysql中having子句也是设定条件的语句与where有相似之处但也有区别 having子句在查询过程中慢于聚合语句 sum min max
  • 网络安全——数据链路层安全协议

    作者简介 一名云计算网络运维人员 每天分享网络与运维的技术与干货 座右铭 低头赶路 敬事如仪 个人主页 网络豆的主页 目录 前言 一 数据链路层安全协议简介 1 数据链路安全性 二 局域网数据链路层协议 1 本地链路局域网 LAN 2 广域
  • 学习笔记:简谈推挽电路

    推挽电路 push pull 就是两个不同极性晶体管间连接的输出电路 推挽电路采用两个参数相同的功率BJT管或MOSFET管 以推挽方式存在于电路中 各负责正负半周的波形放大任务 电路工作时 两只对称的功率开关管每次只有一个导通 所以导通损
  • 数据库数据恢复-Oracle数据库数据恢复案例

    数据库数据恢复环境 Oracle数据库ASM磁盘组有4块成员盘 数据库故障 分析 Oracle数据库ASM磁盘组掉线 ASM实例无法挂载 用户联系我们要求恢复oracle数据库 数据库数据恢复工程师拿到磁盘后 先将所有磁盘以只读方式进行扇区
  • 第六天 01-hydra工具windows远程桌面的密码爆破

    windows远程桌面的密码爆破 概述 RDP是Windows的远程桌面协议 所占用的端口默认为3389 这个是可以修改的 要求 我们要暴力破解3389号端口的前提是对方的3389号端口是开放的 爆破工具 kali使用hydra 九头蛇 工
  • python文件开头两行#!/usr/bin/python和# -*- coding:utf-8 -*-解释以及Pycharm自动创建py文件头部信息

    我们常见到python文件的前两行都会写上如下两行代码 下面我分别解释这两条语句的意义 并介绍pycharm中自动生成py文件头部信息的方法 usr bin env python coding utf 8 或者 usr bin python
  • vs2019 中编译和使用 protobuf 库

    背景 protobuf 是一种跨平台的序列化结构数据的方法 可用于网络数据传输及存储 本文对使用 vs2019 编译 protobuf 库文件进行说明 相关代码及安装文件均来自官网下载 VS2019 编译 protobuf 生成 sln 工
  • 实时语音通讯技术的应用场景与挑战

    随着互联网和移动通信技术的快速发展 实时语音通讯技术已经成为人们日常生活和工作中不可或缺的一部分 实时语音通讯技术可以让人们通过网络进行实时语音通话 不受时间和地点的限制 带来了极大的便利和效率提升 本文将探讨实时语音通讯技术的应用场景和挑
  • Java并发之ThreadLocal源码分析(第二篇:添加元素)

    前言 两个与添加元素相关的方法 initialValue 用于初始化一个默认值 set 用于添加一个元素 set 方法分析 public void set T value Thread t Thread currentThread Thre
  • Pycharm运行unittest报错ModuleNotFoundError: No module named ‘pytest‘解决

    使用unittest未import pytest相关功能语句 在pycharm中右键run的时候报错 Traceback most recent call last File B Application pycharm PyCharm 20
  • FCK配置中文版(转自网络,未知来源)

    1 FCKConfig CustomConfigurationsPath 自定义配置文件路径和名称 2 FCKConfigFCKConfig EditorAreaCSS FCKConfig BasePath css fck editorar
  • MATLAB 图像平移操作(转)

    function outImage immove inImage Tx Ty m n size inImage Tx fix Tx Ty fix Ty move xif Tx lt 0 inImage imcrop inImage abs
  • Android 下拉选择框自定义view

    首先来看一下实现的效果 基本思路 继承PopupWindow的自定义View 说明 下图这部分自己布局 本文中主要说明的是点击某个分类显示的下拉实现 第一步 自定义 SpinnerPopuwindow继承PopupWindow Create
  • Markdown编写公式

    文章目录 Markdown编写公式 一 修改设置 二 希腊字母 三 一些数据结构 四 定界符 五 可变大小的符号 六 函数名称 七 二进制运算符和关系运算符 八 箭头符号 九 其他特殊符号 十 上下标 十一 矩阵 十二 分段函数 1 分段函
  • 集群篇-k8s介绍

    TOC 集群篇 k8s介绍 一 集群业务介绍 集群篇 服务器的搭建 集群的管理 运维 1 集群业务介绍 集群 k8s及自动化部署 服务器的预警监控功能 二 k8s 集群部署 K8S部署 DevOps 百度云地址 提取码 1111 1 k8s