k8s(一)--- Kubernetes的基本介绍和集群部署

1. Kubernetes的介绍

1.1 Kubernetes的简介

k8s官网

在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用。
Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合, 将最终的应用服务交给用户。

1.2 Kubernetes的优点

  • 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
  • 服务高可用、高可靠。
  • 可将负载运行在由成千上万的机器联合而成的集群中。

1.3 kubernetes的集群组成

Kubernetes集群包含有节点代理kubelet和Master
在这里插入图片描述

Kubernetes主要由以下几个核心组件组成:

• etcd:保存了整个集群的状态
• apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
• controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
• scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
• kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
• Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)
• kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡

除了核心组件,还有一些推荐的Add-ons:

• kube-dns:负责为整个集群提供DNS服务
• Ingress Controller:为服务提供外网入口
• Heapster:提供资源监控 • Dashboard:提供GUI
• Federation:提供跨可用区的集群 • Fluentd-elasticsearch:提供集群日志采集、存储与查询

1.4 kubernetes的设计架构

在这里插入图片描述

  • 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
  • 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服 务发现、DNS解析等)
  • 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动 态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
  • 接口层:kubectl命令行工具、客户端SDK以及集群联邦
  • 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴

Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、 OTS应用、ChatOps等
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

2.Kubernetes部署

2.1 所有节点配置

2.1.1 实验环境

server1:192.168.43.11,2cpus,4G运存
server2:192.168.43.22,2cpus,2G运存
server3:192.168.43.33,2cpus,2G运存

所有主机均可上网,selinux和火墙均关闭

2.1.2 所有节点上安装docker-ce并开启

  • 配置软件仓库并安装

1 vim /etc/yum.repos.d/docker.repo

[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0

2 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

3 sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

4 vim /etc/yum.repos.d/CentOS-Base.repo

   :%s/$releasever/7/g

在这里插入图片描述

  • 设置docker daemon并开启docker

vim /etc/sysctl.d/docker.conf

cat /etc/sysctl.d/docker.conf

net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 

sysctl --system

systemctl daemon-reload 重载配置

vim /etc/docker/daemon.json所有节点都需要修改

{
    
      
  "exec-opts": ["native.cgroupdriver=systemd"],  
  "log-driver": "json-file",  
  "log-opts": {
    
        
    "max-size": "100m"  
  },  
  "storage-driver": "overlay2",  
  "storage-opts": [    
    "overlay2.override_kernel_check=true"  
  ] 
}

systemctl enable docker --now设置docker开机自启

docker info(查看到Cgroup Driver状态为 systemd)

在这里插入图片描述

2.1.3 所有节点禁用swap分区

[root@server1 ~]# swapoff -a
[root@server1 ~]# vim /etc/fstab  ##注释掉/etc/fstab文件中的swap定义
[root@server1 ~]# tail -1 /etc/fstab
#UUID=f9d4080c-d030-4310-b3e2-05cc94837bcc swap                    swap    defaults        0 0

在这里插入图片描述

2.1.4 所有节点安装Kubernetes

  • 编写k8s的yum源:
vim /etc/yum.repos.d/k8s.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
  • 安装:
    yum install -y kubelet kubeadm kubectl

  • 开启服务:
    systemctl enable --now kubelet.service

  • 查看默认配置信息:
    kubeadm config print init-defaults

  • 列出所需镜像:
    kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

  • 拉取镜像:
    kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

在这里插入图片描述

2.2 master端节点配置

  • 在master端初始化集群:

master:server1

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
#初始化的输出结果有master和node节点的配置提示

初始化提示结果:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
  • 配置kubectl命令补齐功能:

echo "source <(kubectl completion bash)" >> ~/.bashrc配置kubectl命令补齐功能

source .bashrc生效

  • 安装网络组件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
网速不行就下载kube-flannelyml文件,本地导入
kubectl apply -f kube-flannel.yml

在这里插入图片描述
等待running&ready!!!
在这里插入图片描述

2.3 node端节点配置

在master端导出node节点所需镜像并导入node节点

  • 导出镜像
[root@server1 ~]# docker save quay.io/coreos/flannel registry.aliyuncs.com/google_containers/pause:3.2 registry.aliyuncs.com/google_containers/coredns:1.7.0 registry.aliyuncs.com/google_containers/kube-proxy:v1.20.4 > node.tar
  • 传输并导入镜像

docker load -i node.tar
在这里插入图片描述
在这里插入图片描述

  • 加入集群(执行master端初始化的输出结果)
kubeadm join 192.168.43.11:6443 --token mq8wd0.kg7u26avkxzd9fh8 \
    --discovery-token-ca-cert-hash sha256:929f06c8a09d9a3bb3ffe2f7d6cf00c13ad38cb7ab09d7bc5053cab418fd907e 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46074899/article/details/113890991