Skip to main content
10、存储和配置

10、存储和配置

一、k8s的存储

1、必要条件安装nfs-utils

所有节点

# 所有机器安装nfs-utils
apt install -y nfs-utils

Y-aong...About 6 mink8s部署devops
11、网络Service

11、网络Service

一、service

定义

Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。

Service API 是 Kubernetes 的组成部分,它是一种抽象,帮助你通过网络暴露 Pod 组合。 每个 Service 对象定义一个逻辑组的端点(通常这些端点是 Pod)以及如何才能访问这些 Pod 的策略。


Y-aong...About 7 mink8s部署devops
1、安装配置

1、安装配置

一、安装配置

  • 3台linux服务器,centos服务器本地设置2核4g

  • 三台机器设置组内互信可以互相ping通

  • 关闭机器的防火墙

二、基础安装配置

修改hostname

# 三台机器都要设置
hostnamectl set-hostname k8s-01
# 设置 hostname 解析
echo "127.0.0.1   $(hostname)" >> /etc/hosts

Y-aong...About 2 mink8s部署k8sdevops
2、基础概念

2、基础概念

Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。

详细信息参阅官网

二、k8s对象

k8s里面操作的资源实体就是k8s的对象,可以使用yaml来声明对象,然后让k8s根据yaml的声明来创建出这个对象。Kubernetes对象指的是Kubernetes系统的持久化实体,所有这些对象合起来,代表了你集群的实际情况。常规的应用里,我们把应用程序的数据存储在数据库中,Kubernetes将其数据以Kubernetes对象的形式通过 api server存储在 etcd 中


Y-aong...About 7 mink8s部署devops
3、基础命令

3、基础命令

一、命令概述

# 初学者掌握的命令
Basic Commands (Beginner): 
  create        从文件或stdin中创建资源。
  expose        获取一个复制控制器、服务、部署或pod
# k8s服务
Kubernetes Service
  run           在集群上运行一个特定的映像
  set           设置对象的具体特性

Basic Commands (Intermediate): 基础命令
  explain       资源文档
  get           显示一个或多个资源
  edit          编辑服务器上的资源
  delete        按文件名、stdin、资源和名称或按资源和标签删除资源
  selector		选择器

Deploy Commands:   #部署用的命令
  rollout       管理资源的回滚
  scale         为部署控制器、复制集控制器或复制控制器设置新的大小
  autoscale     自动缩放Deployment、ReplicaSet、StatefulSet或ReplicationController


Cluster Management Commands:  #集群管理的命令
  certificate   修改证书资源。
  cluster-info  显示集群信息
  top           显示资源(CPU/内存)使用率。
  cordon        将节点标记为不可调度
  uncordon      将节点标记为可调度的
  drain         排水节点,为维护做好准备
  taint         更新一个或多个节点上的污点

Troubleshooting and Debugging Commands:  # debug的命令
  describe      打印pod中容器的日志
  logs          打印pod中容器的日志
  attach        附着在运行中的容器上
  exec          在容器中执行命令
  port-forward  将一个或多个本地端口转发到pod
  proxy         向Kubernetes API服务器运行代理
  cp            在容器中拷贝文件和目录。
  auth          检查授权
  debug         为故障排除工作负载和节点创建调试会话

Advanced Commands:  # 高阶命令
  diff          实际版本与潜在应用版本的差异
  apply         通过文件名或stdin将配置应用到资源
  patch         patch资源的更新字段
  replace       用文件名或标准输入替换资源
  kustomize     从一个目录或URL构建一个定制目标。

Settings Commands:  # 设置
  label         更新资源标签
  annotate      更新资源的注解
  completion    输出指定shell (bash或zsh) #的shell补全代码

Other Commands:  #其他
  api-resources 打印服务器上支持的API资源
  api-versions  打印服务器上支持的API版本,格式为"group/version"
  config        修改kubecconfig文件
  plugin        提供与插件交互的实用程序。
  version       打印客户端和服务器版本信息


Y-aong...About 4 mink8s部署devops
4、运行容器

4、运行容器

一、概念

1.1、容器

每个运行的容器都是可重复的; 包含依赖环境在内的标准,意味着无论你在哪里运行它都会得到相同的行为。

容器将应用程序从底层的主机设施中解耦。 这使得在不同的云或 OS 环境中部署更加容易。

Kubernetes 集群中的每个节点都会运行容器, 这些容器构成分配给该节点的 Pod。 单个 Pod 中的容器会在共同调度下,于同一位置运行在相同的节点上。


Y-aong...About 4 mink8s部署devops
5、什么叫pod

5、什么叫pod

一、pod概念

Pod是一组(一个或多个) 容器(docker容器)的集合 (就像在豌豆荚中);这些容器共享存储、网络、以及怎样运行这些容器的声明。

二、pod特点

  • pod对于容器有自律能力(pod自动重启失败的容器)

  • pod不能恢复自己

  • pod分为单容器和多容器

  • pod为其成员容器提供两种共享资源:网络和存储

  • 一个pod由一个pause容器设置好整个pod里面所有的容器的网络和名称空间等信息


Y-aong...About 5 mink8s部署devops
6、完成一次部署

6、完成一次部署

一、定义

deployment为pod是和replicaSets提供声明式更新的能力。Delpoyment就是将实际状态变为期望状态的能力

二、deployment的特点

  • 赋予Pod自愈和故障转移能力
  • 水平扩容
  • 灰度发布
  • 滚动更新

三、deployment-spec的字段

FIELDS:
   minReadySeconds	<integer>
     新创建的pod应准备就绪的最小秒数

   paused	<boolean>
     表示部署暂停。

   progressDeadlineSeconds	<integer>
     部署进展之前的最长时间(以秒为单位)。默认为600s。

   replicas	<integer>
    所需的pod。默认值为1。

   revisionHistoryLimit	<integer>
     要保留以允许回滚的旧ReplicaSets的数量。默认为10.

   selector	<Object> -required-
     标签选择器。

   strategy	<Object>
     用于用新pod替换现有pod的部署策略。

   template	<Object> -required-
     模板描述了将要创建的pod。


Y-aong...About 7 mink8s部署devops
7、RC和RS

7、RC和RS

一、什么是控制器

kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制pod的具体状态和行为。

部分控制器类型如下:

  • ReplicationController 和 ReplicaSet
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job/CronJob
  • HorizontalPodAutoscaler

Y-aong...About 2 mink8s部署devops
8、DaemonSet和StatefulSet

8、DaemonSet和StatefulSet

一、DaemonSet

1、定义

DaemonSet 控制器确保所有(或一部分)的节点都运行了一个指定的 Pod 副本。

  • 每当向集群中添加一个节点时,指定的 Pod 副本也将添加到该节点上
  • 当节点从集群中移除时,Pod 也就被垃圾回收了
  • 删除一个 DaemonSet 可以清理所有由其创建的 Pod

2、使用场景:

  • 在每个节点上运行集群的存储守护进程
  • 在每个节点上运行日志收集守护进程
  • 在每个节点上运行监控守护进程

Y-aong...About 2 mink8s部署devops
2