Kubernetes 集群

本文详细介绍了Kubernetes的概念、用途、好处及其组件。Kubernetes作为开源的容器编排系统,提供资源调度、部署管理、服务发现等功能。通过Kubeadm工具,可以快速部署Kubernetes集群,包括配置机器、安装Docker、使用Kubeadm初始化等步骤。集群部署完成后,可利用flannel网络插件设置网络,并通过kubectl命令检查节点和应用状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kubernetes 集群部署

概述

  • 什么是Kubernetes
  1. 是一个可移植、可扩展的开源容器编排系统
  2. 由于Kubernetes在K和s间有8个字母,因此常简称为 K8S

Kubernetes的概念及用途

  • 是一个开源的Docker容器编排系统
  1. 2015年7月v1.0正式发布,目前为止最新稳定版本v1.18
  2. 调度计算集群节点,动态管理节点上的作业
  3. 使用【labels】和【pods】概念,将应用按逻辑单元分组
  • 主要用途
  1. 资源调度
  2. 部署管理
  3. 服务发现
  4. 扩容缩容
  5. 监控
  6. 自动化部署、扩展和管理容器应用

使用Kubernetes的好处

  • 具备微服务架构
  1. 单体服务拆分成很多小的互相连接的微服务
  2. 实例副本数量根据负载进行调整
  3. 每个微服务的开发者可以自由选择开发技术
  4. 使得系统具备很高的稳定性和快速迭代进化能力
  • 具备超强的横向扩容能力
  1. 横向扩容能力是互联网业务系统的关键指标
  2. 支持在线完成集群扩容

Kubernetes组件

  • Master组件
  1. Kube-apiserver(对集群增删改查的接口)
  2. Etcd(集群数据库,k8s的默认存储数据库)
  3. Kube-scheduler(负责调度各个节点上的服务,资源调度)
  4. Kube-controller-manager(控制管理器)
    (1)节点控制器(Node Controller):负责在节点出现故障时发现和响应
    (2)复制控制器(Replication Controller):负责为系统中的每个复制控制器对象维护正确数量的
    (3)端点控制器(Endpoints Controller):填充端点对象
    (4)服务账户和令牌控制器(Server Account & Token Controllers):为新的命名空间创建默认帐户和 API 访问令牌
  • Node组件
  1. Kubelet(负责Pod对应容器的创建、启停等任务,和master节点进行通信)
  2. Kube-proxy
  3. Docker Engine(容器引擎)
    拓展:Pod(一组容器的集合)

Kubernetes资源对象

  1. 可通过Kubectl工具进行增删改查等操作
  2. 持久化存储到Etcd中
  3. 长用的资源对象
    (1)Pod(一组容器的集合)
    (2)Label(资源标签)
    (3)Replication Controller(复制控制器)
    (4)Deployment(负责管控Pod的数量)
    (5)Service(客户端需要访问的服务)
    (6)Job计划任务(计划任务)
    (7)DaemonSet(守护程序集)

Kubernetes系统框架和计算模型

在这里插入图片描述

Kuberadm部署工具

  1. 是谷歌推出的专门用于快速部署Kubernetes集群的工具
  2. 关注的重点是快速安装并将集群运行起来
  3. 应用方向
    (1)新用户可以使用Kubeadm快速搭建Kubernetes并了解
    (2)老用户可以使用Kubeadm快速搭建集群并测试他们的应用
    (3)在大型的项目可以将Kubeadm结合其他安装工具一起使用,形成一个比较复杂的系统

Kubernetes集群部署

  • 机器配置
  1. 准备三台机器
  2. 配置最低2C4G
  3. 关闭内核安全机制,关闭防火墙

一、基本配置

  • 修改主机名
    第一台 master
    第二台 node1
    第三台 node2
  • 所有机器写hosts映射
 vi /etc/hosts
192.168.93.128 master
192.168.93.129 node01
192.168.93.130 node02
  • 所有机器关闭交换分区
free -h # 可查看swap分区
swapoff -a # 临时关闭)
或者在/etc/fstab配置文件中注释掉swap这一行
  • 所有机器部署Docker(部署18版本的)
yum -y install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.09.9-3.el7
systemctl start docker
systemctl enable docker
  • 所有节点修改内核配置(手动输入,复制的话最后一步可能导致无法运行)
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF                
sysctl --system # 生成配置
  • 配置加速地址,并设置驱动
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://6ze43vnb.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=cgroupfs"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
systemctl daemon-reload  # 重载服务
systemctl restart docker  # 重启服务

二、使用Kubeadm快速部署Kubernetes集群

  • 所有节点配置 Kubernetes 的 YUM 源

vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ 
enabled=1
gpgcheck=1 
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
yum repolist   # 列出所有源,有kubernetes就行
或者
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

yum repolist   # 列出所有源,有kubernetes就行
  • 所有节点安装 Kubelet、Kubeadm 和 Kubectl,并设置开机自启动
yum install -y kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0
systemctl enable kubelet
  • 第一台机器生成初始化配置文件
kubeadm init \
  --apiserver-advertise-address=192.168.93.128 \   # 当前节点的IP,此处是主节点Master的IP
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.16.0 \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.244.0.0/16

PS:如果初始化失败了以后解决方法:
输入kubeadm reset然后y
最后一行有个文件rm -rf 删除这个文件即可

  • 执行完毕后复制最后三行内容去两台从节点node上执行
kubeadm join 192.168.93.128:6443 --token esjcdl.jfsul428oc5krk2s \
    	--discovery-token-ca-cert-hash sha256:b9e79e22e1bd9ccdbe4ed17bc3ce429c5abb8ffe8f09c9bfa86b3058909a6265 
  • 两台从节点执行完毕后显示的mkdir -p到sudo三行命令在master上执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • master节点查看
kubectl get node (能执行成功即可)
  • 上传yml文件至master节点部署网络
    这里使用的是flannel的网络插件,已在网上下好
kube-flannel.yaml    # 需上传的文件
kubectl apply -f kube-flannel.yaml    # 部署网络,最后回显create即可
  • 查看节点所有状态是ready即可(需稍等一会)
kubectl get node # status中master是ready即可

拓展:
kubectl get node -o wide # 查看
kubectl get cs # 查看集群状态
ubectl get ns # 查看命名空间
kubectl get pod -A # 查看所有的命名空间(状态是running即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值