最新公告
  • 欢迎您光临源码资源下载站,一个优质的网站源码和小程序源码分享基地。
  • K8s(Kubernetes)简介及安装部署

    正文概述 服务器教程   2023-12-18 14:00:51  
    k8s是Kubernetes的简称,因为K和S之间有8个字母,所以才会被称为k8s。

    k8s最初是在Google公司内部使用了10多年的技术,它的前身是叫做Borg(博格),直到2015年才被Google公司捐赠为开源项目。

    如果之前我们有接触过OpenStack,那么应该知道管理VM虚拟机资源可以用OpenStack。那么管理容器所对应的开源平台是什么呢?k8s就是其中之一,在k8s之前也有很多容器管理平台,有docker自身的docker swarm,也有apache推出的Mesos等等。相比较而言,虽然k8s比其他推出的晚了些,但是丝毫不影响其火爆程度,除了其功能强大外,更何况它还有个好爹。

    关于k8s更详细的介绍,可以移步至k8s中文文档或者k8s官方网站 ,以便查看更多资料。

    接下来开始安装部署k8s。

    博文大纲:
    一、环境准备
    二、部署前准备

    1、检查docker版本、关闭防火墙及Selinux、清空iptables规则、禁用Swap交换分区
    2、配置ssh免密登录、主机名解析及yum源
    3、打开iptables桥接功能及路由转发
    三、配置k8s群集
    1、安装部署k8s相关工具
    2、初始化k8s集群
    3、配置master节点状态
    4、配置node01及node02加入master群集
    5、部署后的优化配置
    一、环境准备

    注:上述三台centos 7.3服务器,均运行docker服务,如果是测试环境,那么内存最少2G,CPU至少双核,并且docker服务的版本不建议过高,最好是18.09及以下。

    如需部署docker服务,可参考博文:Docker的安装详细配置

    二、部署前准备
    1、检查docker版本、关闭防火墙及Selinux、清空iptables规则、禁用Swap交换分区

    注:以下操作需要在三台docker主机上分别配置一次,哪怕是在生产环境,都需要进行以下操作,因为k8s有它自己的安全策略。

    [root@master~]#docker-v#确认docker版本Dockerversion18.09.0,build4d60db4#关闭防火墙[root@master~]#systemctlstopfirewalld[root@master~]#systemctldisablefirewalld#关闭Selinux[root@master~]#setenforce0[root@master~]#vim/etc/sysconfig/selinuxSELINUX=disabled#将此处改为disabled[root@master~]#iptables-F#清空iptables规则#重启docker服务[root@master~]#systemctldaemon-reload[root@master~]#systemctlrestartdocker#禁用swap交换分区[root@master~]#swapoff-a#临时禁用swap[root@master~]#vim/etc/fstab#打开自动挂载的配置文件,将swap配置项注释掉#/dev/mapper/cl-swapswapswapdefaults00#就注释掉上面那行[root@node02~]#mount-a#重新加载挂载的配置文件[root@node02~]#free-h#确认输出的swap行如下(都为0):Swap:0B0B0B
    2、配置ssh免密登录、主机名解析及yum源

    注:以下没有特别说明的操作,在master主机上操作即可

    [root@master~]#tail-3/etc/hosts#在该文件添加三台主机的解析192.168.20.6master192.168.20.7node01192.168.20.8node02#配置ssh免密登录(为了方便在主机间复制配置文件,可不做)[root@master~]#ssh-keygen-trsa[root@master~]#ssh-copy-idnode01[root@master~]#ssh-copy-idnode02#将更改后的hosts文件发送到node01及node02[root@master~]#scp/etc/hostsnode01:/etc/[root@master~]#scp/etc/hostsnode02:/etc/#接下来配置yum源[root@master~]#vim/etc/yum.repos.d/kubernetes.repo#编辑yum文件[kubernetes]
    name=kubneters
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=0#以上url是阿里开源镜像站,可复制网址自行查看[root@masteryum.repos.d]#yumrepolist#查看刚刚配置的yum源中有没有可用的包kuberneteskubneters421#返回的这一行不可为0[root@masteryum.repos.d]#yummakecache#制作yum元数据缓存#将yum源的配置文件复制到另外两台节点主机上[root@master~]#scp/etc/yum.repos.d/kubernetes.reponode01:/etc/yum.repos.d/[root@master~]#scp/etc/yum.repos.d/kubernetes.reponode02:/etc/yum.repos.d/#在另外两台主机上,都需执行以下两条命令[root@node01~]#yumrepolistkuberneteskubneters421#返回的这一行不可为0[root@node01~]#yummakecache
    3、打开iptables桥接功能及路由转发

    同样,没有特别说明的配置,在master上进行配置即可。

    #打开iptables桥接功能[root@master~]#vim/etc/sysctl.d/k8s.conf#写入以下配置net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1[root@master~]#sysctl-p/etc/sysctl.d/k8s.conf#刷新配置net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1#PS:如果报错“找不到文件”,需要执行下面的命令以便加载一个模块。[root@master~]#modprobebr_netfilter#加载br_netfileter模块#将配置的k8s.conf文件复制到另外两台节点[root@master~]#scp/etc/sysctl.d/k8s.confnode01:/etc/sysctl.d/[root@master~]#scp/etc/sysctl.d/k8s.confnode02:/etc/sysctl.d/#将配置文件复制到另外两台节点后,需要在node01及02上分别执行下面的命令进行刷新[root@node02~]#sysctl-p/etc/sysctl.d/k8s.conf#刷新配置文件#接下来开启路由转发(三台docker主机上都需要进行以下操作)[root@master~]#echo"net.ipv4.ip_forward=1">>/etc/sysctl.conf#开启路由转发[root@master~]#sysctl-p#刷新配置net.ipv4.ip_forward=1

    配置至此,部署前的工作就完成了。

    在进行接下来的操作前,需要先下载我提供的镜像。

    三、配置k8s群集
    1、安装部署k8s相关工具

    注:以下操作在master主机上进行

    [root@master~]#yum-yinstallkubelet-1.15.0-0kubeadm-1.15.0-0kubectl-1.15.0-0#安装k8s的master所需组件[root@master~]#systemctlenablekubelet#将kubelet加入开机自启,但现在不要启动[root@master~]#mkdirimages[root@master~]#cdimages/[root@masterimages]#rz#上传我提供的所有镜像包,共8个镜像包[root@masterimages]#ls#确认上传的镜像包coredns-1-3-1.tarkube-proxy-1-15.tar
    etcd-3-3-10.tarkube-scheduler-1-15.tar
    kube-apiserver-1-15.tarmyflannel-11-0.tar
    kube-controller-1-15.tarpause-3-1.tar#接下来导入上传的镜像包到docker镜像中[root@master~]#pwd#脚本不要和镜像在同一个目录/root
    [root@master~]#vima.sh#编写脚本如下#!/bin/bashcd/root/images/foriin`ls`do
    dockerload<${i}done[root@master~]#sha.sh#执行脚本,进行导入镜像
    2、初始化k8s集群
    [root@masterimages]#kubeadminit--kubernetes-version=v1.15.0--pod-network-cidr=10.244.0.0/16--service-cidr=10.96.0.0/12--ignore-preflight-errors=Swapkubeadmjoin192.168.20.6:6443--tokenxfp7g5.6f2bdfjybt8a1j7r
    --discovery-token-ca-cert-hashsha256:17895c549344a83daae4318360dc9c9212b5dc3b1fb7d79ef84a640c63e489e2

    [root@master~]#mkdir-p$HOME/.kube
    [root@master~]#cp-i/etc/kubernetes/admin.conf$HOME/.kube/config
    [root@master~]#chown$(id-u):$(id-g)$HOME/.kube/config

    返回的信息截图如下,供参考:

    3、配置master节点状态
    [root@masterimages]#kubectlgetnodes#查看群集节点信息NAMESTATUSROLESAGEVERSION
    masterNotReadymaster14mv1.15.0#可以看到master当前状态为未准备

    接下来可以去github官网进行以下操作以便查看相应的命令:

    点击进入后,下拉页面到以下位置,并复制指定的命令到master节点执行一下:


    [root@masterimages]#kubectlapply-fhttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml#执行在github官网复制的命令

    以上只是方式之一,在网络状况良好的情况下建议使用上述方法(调用远端文件执行一下),若网速较差,建议使用以下方法:

    [root@masterimages]#wgethttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml#将github官网指定的.yml配置文件下载到本地[root@masterimages]#ls|grepflannel.yml#确定下载到了当前目录kube-flannel.yml
    [root@masterimages]#kubectlapply-fkube-flannel.yml#指定下载的.yml文件执行相应命令

    上述方法,二选一进行配置即可。

    [root@master&nb





    K8s(Kubernetes)简介及安装部署
    皓玉源码网,一个优质的源码资源平台!
    皓玉源码网 » K8s(Kubernetes)简介及安装部署