1. 首页
  2. 技术知识

Kubernetes集群环境初始化

目录

    概念

      功能k8s组件

    注意三台主机都需要做

      1.环境初始化2.测试环境做etchosts的域名解析真实环境推荐使用dns做域名解析3.集群时间必须同步,企业里推荐搭建自己的时间服务器4.禁用iptables与firewalld 生产环境防火墙一定要慎重5.禁用selinux6.禁用swap分区7.修改linux内核参数8.配置ipvs功能

概念

k8s/kubernetes

容器化部署

解决容器编排问题,kubernetes为容器编排软件的佼佼者

kubernets为一组服务器集群

功能

自我修复 一个容器崩溃,另一个容器起来

X伸缩 根据需要调整容器数量

服务发现 自动发现的形式找到所需依赖

负载均衡 一起分担流量

版本回退 新版本有问题,立马回退到原来的版本

存储编排 可以根据容器自身的需求自动创建存储卷

….

k8s组件

k8s为控制节点 和 工作节点组成。

master节点的组件

负责集群的管理

ApiServer:资源操作的唯一路口 接受命令,管理操作都是通过这个路口

Scheduler:负责根据算法,把活分给谁干?

ControllerManager:调度安排干活

Etcd:监工记录谁在干活做了什么

node节点的组件

负责提供运行环境

kubelet:接受控制节点过来的信息,安排干活,控制docker操作

kubeproxy:提供对外访问,跑了程序访问程序。

docker:负责操作

用实例nginx来说明组件调度关系

master和node信息都存在etcd里来明确控制节点手下有几个干活的

让服务跑在k8s,apiserver接受命令

开始计算服务请求由谁来完成,通过读node信息

知道由谁来完成,则使用controller-manager发送请求

kubelet等着接活的,安排给docker启动一个prod。(目前prod和docker一回事,都是启动程序的。prod为容器最小单元)

kubeproxy外面用户可以访问nignx了

master:集群控制节点至少一台

node:工作负载节点,做事的

pod:kubernets最小存储单元,容器运行在pod中,一个pod有多个容器(通过控制pod来控制容器进而控制程序)

controller:启动pod停止pod伸缩pod

service:对外服务的统一路口下面可以维护同一类的多个pod。流量流向谁呢?

label:对pod进行分类同一类pod打上标签,service通过标签来控制流量

namespace:隔离pod的运行环境

集群环境规划

集群分两类一主多从,多主多从

一主多从,服务器要是宕机了怎么办?集群就完全完蛋了。只能是测试环境

多主多从,安全性非常高?搭建麻烦,适合生产环境

minikube 一个用于单节点测试

kubeadm 快速搭建kubernets集群

二进制包 依次下载组件编译安装,组件之间要产生证书

环境搭建 选用vm虚拟三台服务器

能互通网络,修改主机名

注意三台主机都需要做


1.环境初始化

centos需要在7.5以上

cat /etc/redhat-release

2.测试环境做etchosts的域名解析真实环境推荐使用dns做域名解析

192.168.100.128 master master.example.com

192.168.100.130 node1 node1.example.com

192.168.100.129 node2 node2.example.com

3.集群时间必须同步,企业里推荐搭建自己的时间服务器

systemctl start chronyd

date

4.禁用iptables与firewalld 生产环境防火墙一定要慎重

Kubernetes和Docker会产生大量iptables规则,为了不让系统规则与之混淆,直接关闭系统的规则

systemctl –now disable firewalld

systemctl stop iptables

systemctl disable iptables

(我没有iptables)

5.禁用selinux


6.禁用swap分区

虚拟内存分区 物理内存使用完了,可以将物理空间虚拟成内存。启用swap设备会对系统的性能产生非常负面的影响。也可以告诉kubernetes我非要开这个分区

7.修改linux内核参数

Kubernetes强制要求你这么做 添加网桥过滤和地址转发功能

重载配置

sysctl -p

加载网桥过滤模块

modprobe br_netfilter

查看网桥过滤模块是否加载成功

8.配置ipvs功能

Service 做接X露 负载均衡 反向X 一种iptables 一种ipvs 相比较ipvs性能明显高 需要手动载入ipvs模块

安装ipvsadm ipset

添加shell脚本,功能为加载模块

  1.   [root@master ~]# cat > /etc/sysconfig/modules/ipvs.modules << q
  2.   > #!/bin/bash
  3.   > modprobe — ip-vs
  4.   > modprobe — ip_vs_rr
  5.   > modprobe — ip_vs_wrr
  6.   > modprobe — ip_vs_sh
  7.   > modprobe — nf_conntrack_ipv4
  8.   > q

复制代码 为ipvs的内容

查看对应模块是否加载成功

Centos版本太高导致报错

modprobe: FATAL: Module nf_conntrack_ipv4 not found in directory /lib/modules/4.18.0-373.el8.x86_64

解决报错

成功加载模块

注意三台服务器都要做

最后重启

到此这篇关于Kubernetes集群环境初始化的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持共生网络。

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/108207.html

联系我们