K8S简要操作手册


基本概念

https://www.redhat.com/zh/topics/containers/kubernetes-architecture

https://www.kubernetes.org.cn/kubernetes设计架构

架构

node

Node是Pod真正运行的主机,可以物理机,也可以是虚拟机。为了管理Pod,每个Node节点上至少要运行container runtime(比如docker或者rkt)、kubelet和kube-proxy服务。

pod

在Kubernetes中,最小的管理元素不是一个个独立的容器,而是Pod,Pod是最小的,管理,创建,计划的最小单元, 一个pod中可以定义多个容器, 多个容器共享存储和网络

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis
    volumeMounts:
    - name: redis-storage
      mountPath: /data/redis
  volumes:
  - name: redis-storage
    emptyDir: {}

service

https://kubernetes.io/zh/docs/concepts/services-networking/connect-applications-service/

Kubernetes中一个应用服务会有一个或多个实例(Pod,Pod可以通过rs进行多复本的建立),每个实例(Pod)的IP地址由网络插件动态随机分配(Pod重启后IP地址会改变)。为屏蔽这些后端实例的动态变化和对多实例的负载均衡

namespace

Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。

Namespace常用来隔离不同的用户,比如Kubernetes自带的服务一般运行在kube-system namespace中。

deployment

Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括:

  • 定义Deployment来创建Pod和ReplicaSet
  • 滚动升级和回滚应用
  • 扩容和缩容
  • 暂停和继续Deployment

k8s基本结构图

https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html
https://swissarmydevops.com/containers/kubernetes/kubernetes-cheat-sheet

K8S基本操作命令(命令+截图)

  • 取个别名, 替换kubectl -n test-center-12345678910
alias kk='kubectl -n test-center-12345678910' 
## 不用每次都输那么一长串的namespace了
kk get pod  
kk get deployment
  • 如何查看运行的POD
kubectl get pod --all-namespaces
kubectl -n ns-account get pod

kubectl get pods --all-namespaces | grep xdr9n # 查找所有namespace下的pod 然后筛选出某个pod
  • 如何启动一个POD
kubectl apply -f pod.yaml
  • 如何停止一个POD
kubectl scale --replicas=0 pod/<pod-name>
  • 如何查看POD的状态(CPU/状态/内存)
kubectl top pod <pod-name>

CPU 单位: 1核 = 1000m, 0.5核=500m, 通常用m单位, 直接填1表示1核

  • 如何查看POD挂载的文件目录
kubectl describe pod <pod-name>
  • 如何进入POD执行命令
kubectl exec -it  <pod-name> /bin/bash
  • 如何查看POD的运行配置
kubectl exec -it  <pod-name> /bin/bash # 进入容器cd /app/app/remote/  # 进入容器内部的应用目录, 目前我们大部分中心化应用用的目录是 /app/app/remote
  • 如何查案运行Service
kubectl get svc


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM