Kubernetes小试牛刀

时间:2021-08-03 10:09:21   收藏:0   阅读:27

1、Kubernetes简介

Kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是Google严格保密十几年的秘密武器--Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。

Kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。它的目的就是实现资源管理的自动化,主要提供了如下的功能:

2、Kubernetes组件

2.1、组件介绍

一个Kubernetes集群主要由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。

技术分享图片

2.3、组件概念

2.3、Kubernetes组件调用关系的应用示例

以部署一个Nginx服务器来说明Kubernetes系统各个组件间的调用关系。

? ①首先需要明确,一旦Kubernetes环境启动之后,master和node都会将自身的信息存储到ETCD数据库中。

? ②一个Nginx服务的安装请求首先会被发送到master节点上的API Server组件。

? ③API Server组件会调用Scheduler组件来决定到底应该把这个服务安装到那个node节点上。此时,它会从ETCD中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知API Server。

? ④API Server调用Controller-Manager去调用Node节点安装Nginx服务。

? ⑤Kubelet接收到指令后,会通知Docker,然后由Docker来启动一个Nginx的Pod。Pod是Kubernetes的最小操作单元,容器必须跑在Pod中。

? ⑥一个Nginx服务就运行了,如果需要访问Nginx,就需要通过kube-proxy来对Pod产生访问的代理,这样,外界用户就可以访问集群中的Nginx服务了。

3、集群环境的搭建

3.1、环境规划

3.1.1、集群类型

Kubernetes集群大致分为两类:一主多从和多主多从。

技术分享图片

3.1.2、安装方式

Kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包。

3.1.3、主机规划

角色 IP地址 操作系统 配置
Master 192.168.114.129 Centos7.8+,基础设施服务器 2核CPU,2G内存,50G硬盘
Node1 192.168.114.130 Centos7.8+,基础设施服务器 2核CPU,2G内存,50G硬盘
Node2 192.168.114.131 Centos7.8+,基础设施服务器 2核CPU,2G内存,50G硬盘

3.2、集群搭建(一主多从)

注:无特别说明,三台机器一直执行相应的命令

3.2.1、环境初始化

3.2.2、Kubernetes安装

3.3.3、部署CNI网路插件

此处只需在Master上操作

Kubernetes支持多种网络插件,比如flannel、calico、canal等,任选一种即可,本次选择flannel 。

# 注意此处可能需要KX上网
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 查看部署CNO网络插件进度
kubectl get pods -n kube-system

NAME                             READY   STATUS    RESTARTS   AGE
coredns-7ff77c879f-8cjh4         1/1     Running   0          4h30m
coredns-7ff77c879f-96dh4         1/1     Running   0          4h30m
etcd-master                      1/1     Running   0          4h30m
kube-apiserver-master            1/1     Running   0          4h30m
kube-controller-manager-master   1/1     Running   0          4h30m
kube-flannel-ds-4mj76            1/1     Running   0          3h22m
kube-flannel-ds-7tz4s            1/1     Running   0          3h22m
kube-flannel-ds-mnv66            1/1     Running   0          3h22m
kube-proxy-7pv69                 1/1     Running   0          4h30m
kube-proxy-shv6g                 1/1     Running   0          4h29m
kube-proxy-xhfj7                 1/1     Running   0          4h29m
kube-scheduler-master            1/1     Running   0          4h30m

# 查看节点状态
kubectl get nodes

NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   4h31m   v1.18.0
node1    Ready    <none>   4h30m   v1.18.0
node2    Ready    <none>   4h30m   v1.18.0

# 查看集群健康状态
kubectl get cs

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   

3.3.4、服务部署

在Kubernetes集群中部署一个Nginx服务,测试集群是否正常工作。

# 创建Nginx
kubectl create deployment nginx --image=nginx:1.14-alpine

# 暴露端口
kubectl expose deploy nginx --port=80 --target-port=80 --type=NodePort

# 查看服务
kubectl get svc

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        4h35m
nginx        NodePort    10.107.20.43   <none>        80:30073/TCP   3h21m

# 访问测试(集群中任意一个地址都可以访问)
curl http://192.168.114.131:30073

原文:https://www.cnblogs.com/huiyichanmian/p/15092775.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!