【k8s】2、k8s安装、kubeSphere安装与使用

本文详细介绍了使用kubeadm和二进制方式搭建Kubernetes集群的步骤,包括环境准备、组件安装、网络插件配置等。接着,展示了如何通过kubeadm初始化集群,加入节点,并安装网络插件Flannel实现网络互通。最后,通过部署Nginx测试集群功能。此外,还探讨了KubeSphere的安装和使用,包括用户管理、项目创建、DevOps流程以及WordPress应用的部署。

本文主要内容:

一、k8s集群搭建

本章节主要介绍如何搭建kubernetes的集群环境

2.1 环境规划

集群类型

kubernetes集群大体上分为两类:一主多从多主多从

  • 一主多从:一台Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境
  • 多主多从:多台Master节点和多台Node节点,搭建麻烦,安全性高,适合用于生产环境

在这里插入图片描述

说明:为了测试简单,本次搭建的是 一主两从 类型的集群

主机规划

作用 IP地址 操作系统 配置
Master 192.168.56.100 Centos7.5 基础设施服务器 2颗CPU 2G内存 50G硬盘
Node1 192.168.56.101 Centos7.5 基础设施服务器 2颗CPU 2G内存 50G硬盘
Node2 192.168.56.102 Centos7.5 基础设施服务器 2颗CPU 2G内存 50G硬盘

安装方式

kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包

  • minikube:一个用于快速搭建单节点kubernetes的工具
  • kubeadm:一个用于快速搭建kubernetes集群的工具(本文选取),提供kubeadm init 和 kubeadm join,用于快速部署Kubernetes集群
    • 创建一个Master 节点kubeadm init
    • 将Node 节点加入到当前集群中$ kubeadm join <Master 节点的IP 和端口>
  • 二进制包 :从官网下载每个组件(master和node有多个组件)的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效
    • 还跟证书有关

2.2 k8s环境准备

​ 本次环境搭建需要安装三台Centos服务器(一主二从),然后在每台服务器中分别安装docker(18.06.3),kubeadm(1.17.4)、kubelet(1.17.4)、kubectl(1.17.4)程序。

2.2.1 主机安装

安装虚拟机过程中注意下面选项的设置:

  • 操作系统环境:CPU(2C) 内存(2G) 硬盘(50G)

  • 软件选择:基础设施服务器

  • 分区选择:自动分区

  • 网络配置:按照下面配置网路地址信息

    网络地址:192.168.56.100  (每台主机都不一样  分别为100、101、102)
    子网掩码:255.255.255.0
    默认网关:192.168.56.2
    DNS:    223.5.5.5
    
  • 主机名设置:按照下面信息设置主机名

    master节点:   k8s-node1
    node节点:     k8s-node2
    node节点:     k8s-node3
    

为什么不以 master node1 node2这样的方式命名? 因为在生产中机器不一定作用永远不变

2.2.2 环境初始化

1) 检查操作系统的版本
# 此方式下安装kubernetes集群要求Centos版本要在7.5或之上
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
2) 主机名解析

为了方便后面集群节点间的直接调用,在这配置一下主机名解析,企业中推荐使用内部DNS服务器

# 编辑三台服务器的/etc/hosts文件

cat >> /etc/hosts << EOF
192.168.56.100  k8s-node1
192.168.56.101  k8s-node2
192.168.56.102  k8s-node3
EOF
# 设置主机名 # 如果是vagrant启动的,那其实在vagrantFile中已经配置过了,在这里无需重复配置
hostnamectl set-hostname <hostname>
3) 时间同步

kubernetes要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间。

企业中建议配置内部的时间同步服务器

# 启动chronyd服务
systemctl start chronyd

# 设置chronyd服务开机自启
systemctl enable chronyd

# chronyd服务启动稍等几秒钟,就可以使用date命令验证时间了
date
4) 禁用iptables和firewalld服务

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

# 1 关闭firewalld服务
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
# 2 关闭iptables服务
[root@master ~]# systemctl stop iptables
[root@master ~]# systemctl disable iptables
5) 禁用selinux

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

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

# sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
#  setenforce 0 # 临时
6) 禁用swap分区

swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用

启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备

但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

# vim /etc/fstab 分区配置文件,注释掉swap分区一行
# 注意修改完毕之后需要重启linux服务
 UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot    xfs     defaults        0 0
 /dev/mapper/centos-home /home                      xfs     defaults        0 0
# /dev/mapper/centos-swap swap                      swap    defaults        0 0
# 关闭swap
swapoff -a  # 临时
# sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
7)修改linux的内核参数
# 修改linux的内核参数,添加网桥过滤和地址转发功能
# 编辑/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@master ~]# sysctl -p

# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter

# 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter
8)配置ipvs功能

在kubernetes中service有两种代理模型,

  • 基于iptables
  • 是基于ipvs:ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块
# 1 安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadmin -y

# 2 添加需要加载的模块写入脚本文件
[root@master ~]# 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@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

# 4 执行脚本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules

# 5 查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

也有配置iptables的

将桥接的 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 # 生效

9) 重启服务器

上面步骤完成之后,需要重新启动linux系统

[root@master ~]# reboot

2.2.3 安装docker

Kubernetes 默认 CRI( 容器运行时) 为 Docker, 因此先安装 Docker

# 1 切换镜像源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

# 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 添加一个配置文件yum
# Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs
[root@master ~]# mkdir /etc/docker
# 配置仓库地址
[root@master ~]# cat <<EOF >  /etc/docker/daemon.json
{
   
   
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
EOF

# 5 启动docker
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值