• [Kubernetes]CentOS7部署Kubernetes集群


    环境介绍及安装前准备

    三台机器,用于部署k8s的运行环境:

    节点 ip
    Master 192.168.243.138
    Node1 192.168.243.139
    Node2 192.168.243.140

    集群配置:

    部署节点(1个):运行ansible脚本的节点
    etcd节点(3个):注意etcd集群必须是1,3,5,7...奇数个节点
    master节点(1个):根据实际集群规模可以增加节点数,但是此时需要额外规划一个master VIP(虚地址)
    node节点(2个):真正应用负载的节点,可根据需要增加机器配置和节点数
    lb节点(2个) : 负载均衡节点两个,安装 haproxy+keepalived
    

    k8s集群会识别主机名字,确保每个主机名设为不同值,使用命令即可(修改完成之后,需要重启机器才能生效)

    hostnamectl --static set-hostname  master
    hostnamectl --static set-hostname  node1
    hostnamectl --static set-hostname  node2
    

    编辑/etc/hosts文件,写入下面信息:

    192.168.243.138 master
    192.168.243.139 node1
    192.168.243.140 node2
    

    关闭三台机器上面的防火墙,为了安全,在这里选择临时关闭防火墙,不建议永久关闭

    systemctl stop firewalld 
    

    在安装部署集群之前,先将三台服务器的时间进行同步,否则,在后面的运行中可能会提示错误,以前写过一篇关于时间同步设置的博客,在这里我就不重复了,直接贴出来:【Linux】时间同步设置+防火墙设置+SELinux设置

    部署etcd

    因为内容较多,另外写了一篇博客:[Kubernetes]CentOS7下Etcd集群搭建

    lb节点安装haproxy+keepalived

    在ip为192.168.243.139和192.168.243.140上安装部署haproxy+keepalived

    yum install haproxy keepalived -y
    

    安装完毕之后,修改配置文件,具体如图:
    在这里插入图片描述
    keepalived相关配置文件也要做修改,在这里我就直接贴出来以前写的一篇博客了,就不多做介绍了:Keepalived+LVS-DR+Nginx高可用故障切换模式

    集群部署

    1,安装Docker,一条命令即可(如果服务器上面安装过,这一步可跳过):

    yum -y install docker 
    

    2,安装epel源并更新:

    yum install epel-release -y
    yum update
    

    3,安装及准备ansible(一个节点执行即可,在这里我是在master节点上执行的):

    yum install git python-pip -y 
    (如果直接运行上面命令出错时,可以先运行 yum -y install epel-release 
    之后再运行yum -y install python-pip
    出现错误原因一般是因为CentOS官方的源有些时候滞后导致的) 
    #pip安装ansible:
    pip install pip --upgrade
    pip install ansible
    

    接下来将/usr/bin/pip做以下修改:

    原代码:
    from pip._internal import main
    
    if __name__ == '__main__':
        sys.argv[0] = re.sub(r'(-script.pyw|.exe)?$', '', sys.argv[0])
        sys.exit(main())
    
    修改为:
    from pip._internal import _main_
    
    if __name__ == '__main__':
        sys.argv[0] = re.sub(r'(-script.pyw|.exe)?$', '', sys.argv[0])
        sys.exit(_main_.main())
    

    免密码登陆其他节点

    ssh-keygen -t rsa -b 2048    然后一路回车即可
    ssh-copy-id root@master    (在/etc/hosts文件中的名称,在环境介绍及安装前准备有介绍)
    按照提示输入yes和root密码即可
    需要注意:ssh-copy-id节点地址和自身都要执行此命令
    

    4,编排k8s安装(一个节点执行即可,在这里我是在master节点上执行的):

    git clone https://github.com/gjmzj/kubeasz.git
    mkdir -p /etc/ansible
    mv kubeasz/* /etc/ansible
    

    5,下载二进制文件(一个节点执行即可,在这里我是在master节点上执行的):

    国内请从分享的百度云链接下载 https://pan.baidu.com/s/1c4RFaA
    下载完成之后,解压到/etc/ansible/bin目录下
    如果有合适网络环境,也可以按照/down/download.sh自行从官网上下载
    

    6,配置集群参数(一个节点执行即可,在这里我是在master节点上执行的):

    cd /etc/ansible
    cp example/hosts.m-masters.example hosts
    vi hosts                       # 根据实际情况修改此hosts文件
    # 验证ansible安装,正常能看到每个节点返回 SUCCESS
    ansible all -m ping
    

    如图,我们可以看到ansible已正确安装:
    在这里插入图片描述
    7,开始安装.如果对集群安装了流程不熟悉,可以分步安装,当然也可以一步安装(一个节点执行即可,在这里我是在master节点上执行的):

    # 分步安装
    ansible-playbook 01.prepare.yml
    ansible-playbook 02.etcd.yml
    ansible-playbook 03.docker.yml
    ansible-playbook 04.kube-master.yml
    ansible-playbook 05.kube-node.yml
    ansible-playbook 06.network.yml
    ansible-playbook 07.cluster-addon.yml
    # 也可一步安装
    ansible-playbook 90.setup.yml
    
    验证安装

    到上面为止,就已经做完了相关部署.接下来我们需要验证一下安装的正确与否.

    kubectl version
    kubectl get componentstatus # 可以看到scheduler/controller-manager/etcd等组件 Healthy
    kubectl cluster-info # 可以看到kubernetes master(apiserver)组件 running
    kubectl get node # 可以看到单 node Ready状态
    kubectl get pod --all-namespaces # 可以查看所有集群pod状态,默认已安装网络插件、coredns、metrics-server等
    kubectl get svc --all-namespaces # 可以查看所有集群服务状态
    

    具体图片在这里我就不做展示了.
    有可能提示:kubectl: command not found
    这是因为没有将kubectl没有添加到系统的环境变量中,解决办法:

    首先运行 find / -name kubectl 找到kubectl所在目录
    可以看到,在/etc/ansible/bin/kubectl
    编辑环境变量:vi /etc/profile
    在文件中添加:export PATH=/etc/ansible/bin/:$PATH
    环境变量生效:source /etc/profile
    

    当运行kubectl version时,可能提示:The connection to the server localhost:8080 was refused - did you specify the right host or port?
    解决办法:

    需要开启api server 代理端口:
    查看端口是否代理:curl localhost:8080/api    可以看到是被拒绝连接的
    开启端口代理:kubectl proxy --port=8080 &
    
    安装主要组件
    # 安装kubedns,默认已集成安装
    kubectl create -f /etc/ansible/manifests/kubedns
    # 安装dashboard,默认已集成安装
    kubectl create -f /etc/ansible/manifests/dashboard
    

    此时,我们便可以登录dashboard查看和管理集群了.

  • 相关阅读:
    php 用csv文件导出大量数据初方案
    用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件
    升级 phpStudy 中 MySQL 版本至 5.7.17
    使用 mybatis-generator 自动生成 MyBatis 代码
    使用 JSON-lib 出现异常 java.lang.reflect.InvocationTargetException
    Eclipse 中 Java 代码报版本错误的问题
    Maven 的安装与配置
    Java 中 & | ^ 运算符的简单使用
    经典词句赏析
    酒色财气诗
  • 原文地址:https://www.cnblogs.com/zll-0405/p/10786568.html
Copyright © 2020-2023  润新知