Kubernetes最全详解(入门到精通万字教程)

Kubernetes最全详解(入门到精通万字教程)-mikechen

Kubernetes定义

Kubernetes 这个单词来自于希腊语,含义是舵手领航员,K8S是它的缩写,用“8”字替代了“ubernete”这8个字符。

 

Kubernetes作用

Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新、维护等功能。

Kubernetes包含如下功能作用:

1.自动化运维平台

中小型企业,以及大型互联网公司,可以使用Kubernetes构建一套自动化运维平台,从而降本增效。

Kubernetes最全详解(入门到精通万字教程)-mikechen

K8s + Docker 可以保持开发、测试、生产环境一致,而且部署一个新的环境, 只需要执行一些命令行即可比较方便。

 

2.服务编排

kubernetes 允许声明式配置,自动编排服务,存储自动挂载等等。

 

3.弹性扩缩容

如果是电商公司,比如:每当618,双11系统流量暴增, 需要使用更多的服务器来缓解流量的激增,但是当双十一结束之后,又需要减少集群来减少公司开销。

这就会涉及到横向扩展搭建集群, 而kubernetes 针对上述问题可以自动扩缩容,比如:当流量出现波动的时候, 会自动增加、减少集群的数量。

 

4.服务发现和负载均衡

提供service,ingress 的组件,实现服务发现和负载均衡。

 

Kubernetes架构

Kubernetes架构,如下图所示:

Kubernetes最全详解(入门到精通万字教程)-mikechen

一个Kubernetes集群由两部分构成 :master节点和node节点,更加完整的Kubernetes架构,还可以看下图:

Kubernetes最全详解(入门到精通万字教程)-mikechen

从上图可以看出Kubernetes组件由:Master主节点组件和Node工作节点组件组成,两种角色分别对应着控制节点和工作节点。

Kubernetes的核心组件部署在Master管理节点上,主要作用是作为Kubernetes的“大脑”,控制整个分布式集群的运转,Node节点作为“四肢”,执行Master的操作指令。

 

Kubernetes组件

Kubernetes组件由:Master主节点组件和Node工作节点组件组成,两种角色分别对应着控制节点和工作节点。

1.主节点的组件

主节点架构

master主节点架构,如下图黄框所示:

Kubernetes最全详解(入门到精通万字教程)-mikechen

从上图左侧黄框的Kubernetes主节点可以看出,Master 节点由4个独立的组件组成。

1.API Server组件

Kubernetes最全详解(入门到精通万字教程)-mikechen

API Server的主要负责整个集群通信的 API 服务,API Server是Kubernetes控制程序的前端,也是用户唯一可以直接进行交互的Kubernetes组件。

 

2.键值存储etcd组件

Etcd是一种K-V存储仓库,Etcd主要用于保存集群所有的网络配置和对象的状态信息。

 

3.Controller Manager组件

Controller Manager是Kubernetes的“大脑”,由一系列控制器组成,如下图所示:

Kubernetes最全详解(入门到精通万字教程)-mikechen

Controller Manager主要用于:实现 Kubernetes 集群故障检测,监控整个集群的状态,以及恢复的自动化工作。

 

4.Scheduler组件

Scheduler是Kubernetes的调度器,Scheduler 是负责整个集群的资源调度的。

 

工作节点的组件

工作节点组件,如下图所示:

Kubernetes最全详解(入门到精通万字教程)-mikechen

上图右侧的绿框就是Kubernetes工作节点,包含如下组件:

1.Kubelet

kubelet 是负责容器真正运行的核心组件,kubelet 是 Master 和 Node 之间的桥梁,接收 API Server 分配给它的任务并执行。

 

2.Container Runtime

Container Runtime基于gRPC协议,定义了RuntimeService和ImageService两个gRPC服务,分别用于管理容器运行和镜像。

 

3.Kube-proxy

kube-proxy 是为了解决外部网络能够访问集群中容器提供的应用服务而设计的,Proxy 运行在每个Node 上。

 

4.Pod

Pod是Kubernetes中一个抽象化概念,由一个或多个容器组合在一起得共享资源,如下图所示:

Kubernetes最全详解(入门到精通万字教程)-mikechen
Pod 的设计理念是支持多个容器在一个 Pod 中共享网络和文件系统,可以通过进程间通信,和文件共享这种简单高效的方式组合完成服务。

在Kubernetes中,Pod是调度的最小元素,没有它容器就不能成

 

Kubernetes安装使用

配置服务器环境

1.配置服务器主机名

# master节点
vi /etc/hostname 
设置成 master
# work 节点
vi /etc/hostname
设置成 k8swork1

2.关闭防火墙和selinux

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0 
systemctl stop firewalld
systemctl disable firewalld

3.关闭swap分区

1)临时关闭

swapoff -a

2)永久关闭

sed -ri 's/.*swap.*/#&/' /etc/fstab

4.修改内核参数设置

echo "net.bridge.bridge-nf-call-ip6tables = 1" >>/etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
sysctl -p

5.仓库配置

cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak

备份旧的配置,下载阿里云仓库,下载kubernetes yaml 文件

 

Docker下载安装

1.配置Docker源仓库

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

2.安装docker

yum install -y docker

 

3.启动docker

service docker restart

 

Kubernetes下载安装

1.配置Kubernetes源仓库

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

 

2.卸载旧版本

yum remove -y kubelet kubeadm kubectl

 

3.查看可以安装的版本

yum list kubelet --showduplicates | sort -r

 

4.安装kubelet、kubeadm、kubectl 指定版本

yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0

 

5.开机启动kubelet

systemctl enable kubelet && systemctl start kubelet

 

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法