24kcsplus
文章21
标签35
分类0
暑假运维考核总结

暑假运维考核总结

感觉这几天折腾 K8s 够我这个知识库以后可能会用到的很多内容了,虽然熟练之后可能就不怎么会用到了,但是如果以后生了需要重新熟悉这个东西还是需要的。

部署 K8s

部署 K8s 挺简单的,只需要 Sealos 一把梭就行了

(不过如果要手动部署的话还是有点要命的

安装 Sealos

echo "deb [trusted=yes] https://apt.fury.io/labring/ /" | sudo tee /etc/apt/sources.list.d/labring.list
sudo apt update
sudo apt install sealos

上面是通过包管理器来安装 Sealos,其它的安装方法可以参考官方文档

安装集群

要注意选择合适的版本,K8s 的生命周期感觉不怎么长,所以更新比较频繁,可以在轩辕镜像中查镜像的版本,下面的镜像我也换成了轩辕镜像。

注意 Sealos 如果是 5.0.0 版本及以上的,下面的镜像要找带 -5.0.1 这样的字眼的。

sealos run docker.xuanyuan.me/labring/kubernetes:v1.29.9 docker.xuanyuan.me/labring/helm:v3.9.4 docker.xuanyuan.me/labring/cilium:v1.13.4 --single

K8s 一些常见命令

# 获取资源
kubectl get [资源类型] [资源名称] [选项]
  • 资源类型:常见的资源有 node、deployment、pod、namespace(ns)、service(svc),资源详解将在后文提出
  • 选项:
    • -n 指定命名空间
    • -o 指定输出格式
    • -A 输出上述全部资源,其它资源如 ingress 可能不会列出
    • -l 获取指定标签资源
# 获取特定资源详细信息
kubectl describe [资源类型] [资源名称] [选项]

参数内容和上述基本一致

# 查看指定 pod 的日志
kubectl logs [pod 名称] [选项]
  • 选项:
    • --tail 指定输出最后几行
# 获取特定资源详细信息
kubectl delete [资源类型] [资源名称]

参数内容和上述基本一致

注:k8s pod 中没有重启一说,只能通过删除 pod 来达到重启的目的

# 配置应用资源
kubectl apply -f [CRD 资源文件] [选项]
  • CRD 资源文件:通过 YAML 文件定义的资源结构
# 基于文件或标准输入创建一个资源。

# 接受 JSON 和 YAML 格式。

kubectl create -f [CRD 资源文件]

参数内容和上述基本一致

# 进入指定 pod 内部
kubectl exec -it [pod 名称] /bin/bash

如有需要,可使用 -n 指定 pod 所在命名空间

# 使用策略合并补丁、JSON 合并补丁或 JSON 补丁来更新某资源的字段。

# 接受 JSON 和 YAML 格式。

kubectl patch (-f FILENAME | TYPE NAME) [-p PATCH|--patch-file FILE]

官方示例:

# 使用策略合并补丁部分更新节点,指定补丁为 JSON 格式
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
  
# 使用策略合并补丁部分更新节点,指定补丁为 YAML 格式
kubectl patch node k8s-node-1 -p $'spec:\n unschedulable: true'
  
# 使用策略合并补丁部分更新以在 "node.json" 中所指定类别和名称标识的节点
kubectl patch -f node.json -p '{"spec":{"unschedulable":true}}'
  
# 更新容器的镜像;spec.containers[*].name 是必需的,因为它是合并键
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'

# 使用带有位置数组的 JSON 补丁更新容器的镜像
kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'
  
# 使用合并补丁通过 “scale” 子资源更新 Deployment 的副本
kubectl patch deployment nginx-deployment --subresource='scale' --type='merge' -p '{"spec":{"replicas":2}}'

具体指令使用方法请参考官方文档:https://kubernetes.io/zh-cn/docs/reference/kubectl/generated/

资源类型

1. 工作负载类

此类资源决定了你的应用程序如何运行和扩展:

  • Pod(po)
    K8S最小的可调度单元,是容器的载体。实际生产中很少直接运维裸Pod,通常用在Job等场景。

  • ReplicaSet(rs)
    保证指定副本数的Pod持续运行。多由Deployment控制间接管理,不直接编写。

  • Deployment(deploy)
    最常用的部署资源,支持回滚、滚动升级。日常生产用的最多,如Web应用、API服务等。

  • StatefulSet(sts)
    有状态服务(如MySQL、Redis集群)专用,Pod有固定标识符和持久存储。

  • DaemonSet(ds)
    用于每个(或指定)Node上自动运行一个Pod,例如日志收集、监控agent。

  • Job / CronJob
    Job用于一次性任务,CronJob实现定时调度(可类比Linux的crontab)。

2. 服务发现与负载均衡

  • Service(svc)
    集群内持久服务入口,实现Pod间或外部服务访问负载均衡。

  • Endpoints / EndpointSlice
    Service关联的实际Pod IP存储对象,自动管理,无需手动变更。

  • Ingress
    七层路由,支持HTTP/S流量的准入、反向代理、SSL。

3. 存储管理

  • PersistentVolume(pv)、PersistentVolumeClaim(pvc)
    PV是系统管理员提供的物理存储,PVC是用户申请的逻辑存储,两者绑定让Pod能持久存储。

  • StorageClass(sc)
    提供动态存储卷选项,简化PVC自动分配。

4. 配置与密钥

  • ConfigMap(cm)
    存储配置数据,诸如环境变量、配置文件。明文存储,非敏感信息。

  • Secret
    存储敏感数据,例如密码、密钥、token,默认base64编码(需注意不是加密,生产需结合KMS等方案)。

5. 集群级管理

  • Namespace(ns)
    多租户/隔离环境的实现基础,推荐每个业务系统独占一个namespace。

  • Node(no)
    集群中的物理机/虚拟机。不可随意操作,部分命令需集群管理员权限。

7. 其他高阶与扩展

  • CRD(CustomResourceDefinition)
    用户自定义资源类型。实现Operator、Service Mesh、云原生数据库等扩展生态的基石。

更多详见:https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/

其它补充

更换 containerd 镜像

有的时候创建 Pod 会卡在 Pull Image 的阶段,这可能是因为国内特殊的网络国情,这时候就需要使用镜像

配置镜像只需要修改 /etc/containerd/certs.d/docker.io/hosts.toml 这个文件就可以了

下面是一个文件示例:

server = "https://docker.io"

[host."https://dockerproxy.com"]
capabilities = ["pull", "resolve"]

修改完这个文件之后需要重启一下 containerd 服务:

systemctl restart containerd.service

测试效果:

sudo crictl pull docker.io/library/nginx:alpine

Longhorn PV

有的时候如果总的分配的 PV 大于存储空间,可能会导致 Pod 无法附加,这个时候记得扩容,或者上 Web UI 调整保留容量

挂载新磁盘的时候也要记得在 Web UI 挂载

有关访问 Web UI 的部分,详见:https://longhorn.io/docs/1.9.1/deploy/accessing-the-ui/

本文作者:24kcsplus
本文链接:https://24kblog.top/posts/424668771/
版权声明:除非特别声明,否则本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×