3. K8S集群安装及资源介绍

1. k8s集群安装

  一种是通过Play with K8S网站,在线体验k8s集群的使用,无需自行安装虚拟机及相关镜像文件。具体过程可参考:在线免费搭建k8s集群体验

  另一种通过在虚拟机上自行安装多个系统并进行配置,其中可能会遇到多个虚拟机之间的网络通信问题等,主要可参考Blog①和②,在虚拟机上搭建k8s集群主要参考Blog③和④ ,本人使用的是CentOS 7 64位系统,k8s版本为v1.18.0。

参考Blog①:CentOs7网络配置

参考Blog②:虚拟机安装centos7并配置网络

参考Blog③:虚拟机从零搭建k8s集群

参考Blog④:kubernetes 集群搭建(kubeadm 方式)

XShell的安装和使用

可配置私有仓库Harbor

2. K8S中的资源介绍

2.1 资源简介

K8S中所有的内容都抽象为资源,资源实例化之后叫做对象。

 集群资源分类:

  名称空间级别:仅在一定的名称空间下生效。比如通过kubeadm安装k8s集群时,会把系统组件放在kube-system名称空间下运行,如果直接通过kubectl get pod获取pod信息时,是无法获得在kube-system名称空间下的资源的。(因为kubectl get pod命令默认获得的是default名称空间下的资源)。

①工作负载型资源( workload ): Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、 CronJob ( ReplicationController 在 v1.11 版本被废弃 ) ;

②服务发现及负载均衡型资源( ServiceDiscovery LoadBalance ): Service、Ingress、…;

③配置与存储型资源: Volume( 存储卷 )、CSI( 容器存储接口,可以扩展各种各样的第三方存储卷 )

④特殊类型的存储卷:ConfigMap( 当配置中心来使用的资源类型 )、Secret(保存敏感数据)、DownwardAPI(把外部环境中的信息输出给容器)

  集群级别:比如role,不管在什么名称空间下定义资源,在其他名称空间下都可以看到这些资源。

举例:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding

  元数据型:比如HPA,可以通过CPU当前的利用率平滑扩展,这是一个典型的元数据型,通过指标进行操作。

举例:HPA、PodTemplate、LimitRange

2.2 资源清单

K8S 中一般用 yaml 格式文件创建符合预期期望的 pod ,将 yaml 文件一般称为资源清单。关于YAML文件的格式查看其他文档。

使用yaml定义资源时常用的字段
必须存在的属性:
在这里插入图片描述
主要对象有
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他额外的一些参数项有
在这里插入图片描述

资源清单格式
apiVersion: group/apiversion # 如果没有给定 group 名称,那么默认为 core,可以使用 kubectl apiversions # 获取当前 k8s 版本上所有的 apiVersion 版本信息( 每个版本可能不同 )
kind: Pod #资源类别
metadata: #资源元数据
  name:
  namespace:
  lables:
  annotations: # 主要目的是方便用户阅读查找
spec: # 期望的状态(disired state)
status:# 当前状态,本字段有 Kubernetes 自身维护,用户不能去定义
#---------------------可以看下面的一个例子
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  namespace: default
  labels:
    app: myapp
    version: v1
spec:
  containers:
  - name: app
    image: hub.aiguigu.com/library/myapp:v1
#创建pod.yaml文件之后,终端运行如下命令即可创建pod
kubectl apply -f pod.yaml
#或者采用如下命令
kubectl create -f pod.yaml

当pod出现错误时,一般可以采用如下的解决思路:

首先终端输入kubectl describe pod pod的名称,查看pod哪些容器出现错误

然后查看日志 比如查看pod中指定容器的log kubectl log myapp-pod -c test-container

资源清单的常用命令
# 获取 apiversion 版本信息
kubectl api-versions
# 获取资源的 apiVersion 版本信息
kubectl explain pod
kubectl explain Ingres
# 获取字段设置帮助文档
kubectl explain pod
kubectl explain pod.version
### 字段配置格式
apiVersion <string> #表示字符串类型
metadata <Object> #表示需要嵌套多层字段
labels <map[string]string> #表示由k:v组成的映射
finalizers <[]string> #表示字串列表
ownerReferences <[]Object> #表示对象列表
hostPID <boolean> #布尔类型
priority <integer> #整型
name <string> -required- #如果类型后面接 -required-,表示为必填字段
通过定义清单文件创建 Pod
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-1
    image: hub.atguigu.com/library/myapp:v1
  - name: busybox-1
    image: busybox:latest
    command:
    - "/bin/sh"
    - "-c"
    - "sleep 3600"
kubectl get pod xx.xx.xx -o yaml
# <!--使用 -o 参数 加 yaml,可以将资源的配置以 yaml的格式输出出来,也可以使用json,输出为json格式-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值