k8s二进制安装部署超超详细指南

概念

什么是k8s

K8s是一组服务器集群 
K8s所管理的集群节点上的容器

K8s的功能

+ 自我修复:如果物理机上的容器故障或者物理机宕机,k8s会自动在其他机器启动容器
+ 弹性伸缩:实时根据服务器的并发情况增加或者缩减容器数量
+ 自动部署和回滚:使用yaml文件实现自动部署
+ 服务发现和负载均衡
+ 机密和配置共享管理
+ 储存编排
+ 批处理

k8s集群架构

k8s集群架构

  • K8s集群分为两类节点:Master Node主节点 ,Worker Node工作节点
    • Master节点的组件(服务程序):
      • apiserver:接收客户端操作k8s的命令
      • Schduler:从后端的多个worker中找到一个节点
      • Controller Manager:控制后端节点Kubelet启动docker容器的程序
      • Etcd数据库:K8s的数据库,用于注册节点、服务、记录账号、记录名称解析等
    • Node节点组件:
      • Kubelet:像docker发送指令,管理docker容器
      • Kubeproxy:管理docker容器的网络,分配ip暴露端口等
    • Pod:
      • 就是一组容器打包之后的一个集合称之为pod(容器组),是k8s调度的最小单元,一个pod中可以有一个或者多个容器,pod是短暂的,运行完就消失
        K8s不能直接启动容器
    • Controllers:
      • 控制器,用于控制pod,启动,停止、删除pod,控制器类型比较多
    • Service:
      • 用于关联一组pod,防止pod失联,pod在运行过程中会动态的销毁和创建,导致pod的ip会改变,由service在最上层,提供统一的入口,即使pod信息改变,统一的入口也不会变化,可以保证用户访问得了,更新各个组件的信息,保证实时能够链接得上。
        在这里插入图片描述
    • Label:
      • 想要关联一组pod就需要给每一个pod打标签
    • Namespace:
      • 命名空间,默认情况下,一个k8s集群下的pod是可以互相访问的,实现业务的隔离,为不同的公司提供隔离的pod运行环境;为开发、测试、生产环境分别准备不同的名称空间进行业务隔离。

K8s部署步骤

集群结构

在这里插入图片描述

  • 生产环境:
    • Master节点必须实现高可用,避免单机故障,生产环境绝对不允许出现单点故障 (建议三台)
    • Etcd也要求有三个节点(必须,必须是奇数,为了解决选举问题)
    • Worker越多越好
  • 测试环境:
    在这里插入图片描述
先部署为单master再升级多maste

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

实验环境规划

三个节点(2G内存 2核CPU)
在这里插入图片描述

  • Minikube:只能体验一下k8s,没有其他作用
  • Kubeadm:不清楚做了什么
  • 二进制:比较复杂,要改很多配置文件

部署单master集群

集群规划:

master:
主机名:k8s-master1
IP:193.168.10.63
Worker1:
主机名:k8s-node1
IP:193.168.10.65
Worker2:
主机名:k8s-node1
IP:193.168.10.66
K8s版本:1.16
安装方式:离线二进制
操作系统:centos7.7(1904)

初始化服务器

关闭防火墙(所有节点都执行)
	systemctl stop firewalld
	systemctl disable firewalld
关闭selinux(所有节点都执行)
	先临时关闭selinux:
	setenforce 0  #如果没有打印信息就代表已经关闭了
	vim /etc/selinux/config #编辑这个文件 设置disabled
	SELINUX=disabled
配置主机名称(所有节点都执行)
	hostnamectl set-hostname k8s-master1
	hostnamectl set-hostname k8s-node1
	hostnamectl set-hostname k8s-node2
	hostname #执行该命令确定名字改好
配置名称解析 host文件(所有节点都执行)
	vim /etc/hosts #将以下内容加入各个节点机器的hosts文件
	193.168.10.63 k8s-master1
	193.168.10.64 k8s-master2
	193.168.10.65 k8s-node1
	193.168.10.66 k8s-node2
配置时间同步
选择一个节点作为服务端 剩下的作为客户端
使用master1作为时间服务器的服务端  其他节点作为时间服务器的客户端
 +++![在这里插入图片描述](https://img-blog.csdnimg.cn/20210709190142746.png)
配置k8s-master1
 		 yum install chrony
		 vim /etc/chrony.config
  • 修改上游服务器
    在这里插入图片描述

对于master节点,使用自己的时间在集群内部完成时间同步,则把所有外部的server全部注释掉,添加一个127.0.0.1

  • 允许访问的网段
    在这里插入图片描述
  • 修改度量值
    在这里插入图片描述
  • 启动服务
		systemctl start chronyd
		systemctl enable chronyd
  • 确定服务
		ss -unl | grep 123

在这里插入图片描述

配置客户端 node1 node2

安装时间同步 -> 修改配置文件 只用指定上游服务器
在这里插入图片描述

  • 启动服务
		systemctl start chronyd
		systemctl enable chronyd

注:客户端端口无所谓 查一下时间同步

  • 确定服务
		chronyc sources
		^*:时间已经同步
		^?:时间未同步

在这里插入图片描述

关闭交换分区(会导致服务起不来)
		swapoff -a #临时关闭
实现每次开机时候交换分区都关掉:
		vim /etc/fstab #删除最后一行

在这里插入图片描述

	确认交换分区关闭: free -m
Swap:             0           0           0

部署集群

所有节点和etcd通信都是基于https,则需要自签一个证书实现加密传输。
在这里插入图片描述

注:关于加密: 1:对称加密:用相同的密钥,在传输过程中,加密解密使用的密钥是相同的
2:非对称加密:加密解密过程中使用的是密钥对,分为公钥和私钥,发送使用公钥加密,只能使用与之对应的那一个私钥进行解密
3:单向加密:只管加密不管解密,md5等进行数据校验

  • Ssl:证书来源:
    • 网络第三方机构购买,一般用于外部用户访问使用
    • 自己给自己发:自签证书(也可以给外部,但是浏览器会提示证书不受信任)
    • 自建CA:
      1):使用openssl
      2):使用cfssl:让集群中的机器通过这个CA完成https的通信

CA:证书颁发机构

给etcd颁发证书

项目所需所有资料
链接:https://pan.baidu.com/s/15PfdIqns3PSfrWvgcwrn3A
提取码:0br6

将文件按图放置到master的家目录下
在这里插入图片描述
在这里插入图片描述

含有两个目录:

  • etcd:为etcd颁发证书使用
  • k8s:为k8s颁发证书使用
  • 执行cfssl.sh脚本
 ./cfssl.sh 
  • 进入etcd目录
    • 修改server-csr.json(改要给哪几个主机的etcd颁发证书) 项目结构如下图
      在这里插入图片描述

master:
主机名:k8s-master1
IP:193.168.10.63
Worker1:
主机名:k8s-node1
IP:193.168.10.65
Worker2:
主机名:k8s-node1
IP:193.168.10.66

  • 修改结果(注意细节):
    在这里插入图片描述

    • 创建CA
      • 执行 generate_etcd_cert.sh 脚本
	cd ~/TSL
	./generate_e
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值