【K8S 概述&架构组件&核心概念 01】

一、k8s概述

1、谷歌14年开源的容器化集群管理系统

2、使用k8s进行容器化应用部署

3、使用k8s利于应用扩展

4、k8s目标实施让部署容器化应用更加简洁和高效

二、k8s集群架构组件

Master(主控节点) 和node(工作节点)

1、Master组件 -->不做具体的事情,只是管理调度node节点

  • apiserver:集群统一入口(比如:在集群中部署一个应用,需要通过apiserver进入到集群中) ,即:各个组件的协调者,已resrful方式交给etcd存储
  • scheduler:节点调度,选择node节点应用部署(例如:公交站调度各个公交车的运行)
  • controller-manager:处理集群中常规后台任务,一个资源对应一个控制器
  • ectd:存储系统,用于保存集群中相关的数据  (比如:apiserver的操作数据,controller-manager的创建数据都会在etcd里面保存)

通俗理解:比如想部署一个订单的应用,通过scheduler找到一个node节点用于部署,controller-manager就会建一个对这个订单的controller(控制器)专门对这个订单进行管理,如果下面有一个购物车的应用那么就会建一个controller专门对其进行管理

 2、Worker node组件

  • kubelet:master派过去专门管理node节点的一个代表,管理本机容器的生命周期,创建,各种操作等等
  • kube-proxy:提供网络代理,实现负载均衡等操作

三、k8s核心概念

1、pod:

  • 最小部署单元
  • 一组容器的集合
  • 共享网络
  • 生命周期是短暂的(服务器重启之前的pod可能就不存在了)

2、controller:    -->利用controller创建pod

  • 确保预期的pod副本数量
  • 无状态应用部署
  • 有状态应用部署
  • 确保所有的node运行同一个pod
  • 一次性任务和定时任务

3、service

  • 定义一组pod的访问规则

四、实际搭建k8s集群

1、搭建k8s环境平台规划

1)单master集群

2)多master集群 (高可用)

3、搭建k8s集群部署方式

3.1、系统初始化

第一种方式:kubeadm 方式

# 关闭防火墙

$ systemctl stop firewalld 
$ systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时
# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名

hostnamectl set-hostname <hostname>

 # 在master添加hosts  -=-linux写入多行数据时,可以用cat >> /etc/hosts << EOF  EOF这样的方式

cat >> /etc/hosts << EOF
172.16.137.130  k8smaster    
172.16.137.129  k8snode1
172.16.137.128  k8snode2
EOF

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

 # 时间同步

yum install ntpdate -y
ntpdate time.windows.com

上面的这种在centos7可以成功,但是在centos8内无法实现

centos8时间同步由chrony来实现

vim /etc/chrony.conf

注释掉
pool 2.centos.pool.ntp.org iburst
加入新的的时间服务器
server 210.72.145.44 iburst  #210.72.145.44本机IP地址
server ntp.aliyun.com iburst

重启服务
systemctl restart chronyd.service
此时时间已经与网络时间同步
设置开机自启
systemctl enable chronyd.service

3.2、所有节点安装Docker/kubeadm/kubelet

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

1)安装Docker

2)添加阿里云YUM软件源

#设置仓库地址

cat > /etc/docker/daemon.json << EOF 
{ 
    "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] 

}
EOF

然后需要重启docker
systemctl restart docker

验证修改成功没有:终端输入:docker info

 包含这个就说明成功了

#添加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

#安装 kubeadm,kubelet 和 kubectl

$ yum install -y kubelet kubeadm kubectl 
$ systemctl enable kubelet

第一种方式在centos8.4系统安装很容易失败,后面的步骤就不继续了

第二种方式:kubernetes 集群搭建(二进制方式)

 

posted @ 2022-07-13 17:38  尘封~~  阅读(65)  评论(0编辑  收藏  举报