• 【云原生】如何快速部署Kubernetes


    What is Kubernetes

    Kubernetes这个单词来自于希腊语,含义是舵手或领航员。Kubernetes,也称为K8S,其中8是代表中间“ubernete”的8个字符。
    官网描述如下图:生产级别的容器编排系统,是用于自动部署,扩展和管理容器化应用程序的开源系统。 (编排:按照一定的目的依次排列;调配、安排)。
    在这里插入图片描述

    K8S是 CNCF 毕业的项目,本来Kubernetes是Google的内部项目,后来开源出来,又后来为了其茁壮成长,捐给了Cloud Native Computing Foundation(CNCF:云原生计算基金会)
    我们在github上可以看到,Kubernetes是采用Go语言开发的。Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
    在这里插入图片描述

    Kubernetes架构示意简图

    在这里插入图片描述

    Master(系统由控制面)
    k8s集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
    Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller MangerServer 所组成;

    Nodes(数据面)
    集群工作节点,运行用户业务应用容器;
    Nodes节点也叫Worker Node,包含kubelet、kube proxy 和 Pod(Container Runtime);

    Kubernetes环境搭建方式

    部署 Kubernetes 环境(集群)主要有多种方式:
    1、kubeadm
    Kubeadm是一个K8s部署工具,提供kubeadm init 和 kubeadm join两个操作命令,可以快速部署一个Kubernetes集群;
    2、minikube
    minikube可以在本地运行Kubernetes的工具,minikube可以在个人计算机(包括Windows,macOS和Linux PC)上运行一个单节点Kubernetes集群,以便您可以试用Kubernetes或进行日常开发工作;
    3、二进制包方式
    从Github下载发行版的二进制包,手动部署安装每个组件,组成Kubernetes集群,步骤比较繁琐,但是能让你对各个组件有更清晰的认识;
    4、yum安装方式
    通过yum安装Kubernetes的每个组件,组成Kubernetes集群,不过yum源里面的k8s版本已经比较老了;
    5、第三方工具:利用一些大神封装的工具进行k8s环境的安装;
    6、还有一种就是一些云服务公司的公用云平台k8s。

    Kubeadm部署Kubernetes

    本文将介绍以上的第一种方式进行示意部署讲解:
    kubeadm是官方社区推出的一个用于快速部署 kubernetes 集群的工具,这个工具能通过两条指令完成一个kubernetes集群的部署;
    1、创建一个Master节点:

    kubeadm init

    2、将Node节点加入到Master集群中:

    $ kubeadm join

    Kubernetes部署环境要求

    1、一台或多台机器,操作系统CentOS 7.x-86_x64
    2、硬件配置:内存2GB以上,CPU 2核或CPU 2核以上;
    3、集群内各个机器之间能相互通信(必须);
    4、集群内各个机器可以访问外网,需要拉取镜像(非必须,也可手动下载需要的文件包);
    5、禁止swap分区;

    Kubernetes部署环境准备

    关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    
    • 1
    • 2

    关闭selinux

    sed -i 's/enforcing/disabled/' /etc/selinux/config  #永久
    setenforce 0  #临时
    
    • 1
    • 2

    关闭swap(k8s禁止虚拟内存以提高性能)

    sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
    swapoff -a #临时
    
    • 1
    • 2

    在master添加hosts (ip地址根据自己预先设置的为准)

    cat >> /etc/hosts << EOF
    192.168.52.100 k8smaster
    192.168.52.101 k8snode
    EOF
    
    • 1
    • 2
    • 3
    • 4

    设置网桥参数

    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system  #生效
    
    • 1
    • 2
    • 3
    • 4
    • 5

    时间同步

    yum install ntpdate -y
    ntpdate time.windows.com
    
    • 1
    • 2

    Kubernetes安装具体步骤

    所有服务器节点安装Docker、kubeadm、kubelet、kubectl,Kubernetes默认容器运行环境是Docker,因此首先需要安装Docker;
    1、安装 Docker
    更新docker的yum源

    yum install wget -y
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    
    • 1
    • 2

    安装指定版本的docker(自行替换最新版本号x.x.x.x):

    yum install docker-ce-x.x.x.x -y
    
    • 1

    配置加速器加速下载

    /etc/docker/daemon.json
    {
    "registry-mirrors": ["https://cr.console.aliyun.com/"]
    }
    
    • 1
    • 2
    • 3
    • 4

    然后执行,不然会提示警告:

    systemctl enable docker.service

    2、接下搭建:kubeadm、kubelet、kubectl , 添加k8s的阿里云YUM源

    cat > /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、安装 kubeadm,kubelet 和 kubectl

    yum install kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 -y

    然后执行, 不然会提示警告:

    systemctl enable kubelet.service

    查看有没有安装:

    yum list installed | grep kubelet
    yum list installed | grep kubeadm
    yum list installed | grep kubectl
    
    • 1
    • 2
    • 3

    查看安装的版本:

    kubelet –version

    Kubelet:运行在cluster所有节点上,负责启动POD和容器;
    Kubeadm:用于初始化cluster的一个工具;
    Kubectl:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件;

    此时应重启一下系统reboot(centos);

    4、部署Kubernetes Master主节点(此命令在master机器上执行)

    kubeadm init --apiserver-advertise-address=192.168.52.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.24.1 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16   
    
    • 1

    补充:service-cidr 的选取不能和PodCIDR及本机网络有重叠或者冲突,一般可以选择一个本机网络和PodCIDR都没有用到的私网地址段,比如PODCIDR使用10.244.0.0/16, 那么service cidr可以选择10.96.0.0/12,网络无重叠冲突即可;

    接下来在master机器上执行:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    kubectl get nodes
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接下来把node节点加入Kubernetes master中,在Node机器上执行;
    向集群添加新节点,执行的命令是kubeadm init最后输出的kubeadm join命令(如下图):
    在这里插入图片描述

    kubeadm join 192.168.52.101:端口号 --token wa5bif.zfuvbesevdfvf4of \
        --discovery-token-ca-cert-hash sha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8 
    
    • 1
    • 2

    在这里插入图片描述

    部署网络插件

    下载kube-flannel.yml文件 (flannel作为k8s的集群中常用的网络组件,其yml文件的获取,建议去github中获取)

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
    • 1

    应用kube-flannel.yml文件得到运行时容器

    kubectl apply -f kube-flannel.yml (在master机器上执行)
    在这里插入图片描述

    然后查看节点状态: kubectl get nodes (在master机器上执行),STATUS:Ready 时,说明我们的k8s环境至此就搭建好了。

    查看运行时容器pod (一个pod里面运行了多个docker容器)

    kubectl get pods -n kube-system
    在这里插入图片描述

    以上就是用Kubeadm简单部署Kubernetes的过程,其中涉及到提前准备机器、环境、安装包等动作,过程中需要大家细心操作,部分组件、包等不能通过wget顺利下载时,建议手工下载。 最后,迎大家参考、亲测~

    🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连收藏支持就更好啦!谢谢各位大佬给予的鼓励!

  • 相关阅读:
    GitHub 官方大动作频频「GitHub 热点速览 v.22.24」
    剖析虚幻渲染体系(17)- 实时光线追踪
    软考高级及杭州E类人才申请经验分享
    169. 多数元素
    AI 编码助手 Codewhisperer 安装步骤和使用初体验
    FFmpeg合并音视频文件操作备忘(mac版)
    Java预习8
    黑马JVM总结(三十七)
    sqlalchemy查询数据为空,查询范围对应的数据在数据库真实存在
    快速安装docker-compose
  • 原文地址:https://blog.csdn.net/GaussDB/article/details/126058045