10、存储和配置
一、k8s的存储
1、必要条件安装nfs-utils
所有节点
# 所有机器安装nfs-utils
apt install -y nfs-utils
所有节点
# 所有机器安装nfs-utils
apt install -y nfs-utils
Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。
Service API 是 Kubernetes 的组成部分,它是一种抽象,帮助你通过网络暴露 Pod 组合。 每个 Service 对象定义一个逻辑组的端点(通常这些端点是 Pod)以及如何才能访问这些 Pod 的策略。
3台linux服务器,centos服务器本地设置2核4g
三台机器设置组内互信可以互相ping通
关闭机器的防火墙
修改hostname
# 三台机器都要设置
hostnamectl set-hostname k8s-01
# 设置 hostname 解析
echo "127.0.0.1 $(hostname)" >> /etc/hosts
Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。
详细信息参阅官网
k8s里面操作的资源实体就是k8s的对象,可以使用yaml来声明对象,然后让k8s根据yaml的声明来创建出这个对象。Kubernetes对象指的是Kubernetes系统的持久化实体,所有这些对象合起来,代表了你集群的实际情况。常规的应用里,我们把应用程序的数据存储在数据库中,Kubernetes将其数据以Kubernetes对象的形式通过 api server存储在 etcd 中。
# 初学者掌握的命令
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 打印客户端和服务器版本信息
每个运行的容器都是可重复的; 包含依赖环境在内的标准,意味着无论你在哪里运行它都会得到相同的行为。
容器将应用程序从底层的主机设施中解耦。 这使得在不同的云或 OS 环境中部署更加容易。
Kubernetes 集群中的每个节点都会运行容器, 这些容器构成分配给该节点的 Pod。 单个 Pod 中的容器会在共同调度下,于同一位置运行在相同的节点上。
Pod是一组(一个或多个) 容器(docker容器)的集合 (就像在豌豆荚中);这些容器共享存储、网络、以及怎样运行这些容器的声明。
pod对于容器有自律能力(pod自动重启失败的容器)
pod不能恢复自己
pod分为单容器和多容器
pod为其成员容器提供两种共享资源:网络和存储
一个pod由一个pause容器设置好整个pod里面所有的容器的网络和名称空间等信息
deployment为pod是和replicaSets提供声明式更新的能力。Delpoyment就是将实际状态变为期望状态的能力
三、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。
kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制pod的具体状态和行为。
部分控制器类型如下:
DaemonSet 控制器确保所有(或一部分)的节点都运行了一个指定的 Pod 副本。