kubeadm命令和k8s资源

kubectl

kubectl [command] [TYPE] [NAME] [flags]

1、command:子命令,用于操作资源对象

例如get、delete、describe、exec、cp、logs、apply、create、apply等

create 用于创建资源,apply 用于创建或更新。所以更推荐使用 apply。

2、TTPE:资源类型

每一种资源类型都应该有一个控制器来管理维护,使其状态始终处于预期状态(调谐)

1
kubectl get pods

3、NAME:具体资源的名称

1
kubectl get pods xxx yyy zzz

4、flags:可选参数

1
2
3
kubectl get pods xxx -o wide   #详细信息
kubectl get pods xxx -o yaml #导出配置文件
kubectl get pods -A #查看所有名称空间

基础用法

查看

1
2
3
4
kubectl api-resources   # 查看资源类型
kubectl logs -f [pod_name] #查看日志
kubectl describe node [node_name] #查看事件
crictl ps # 查看当前运行的pod

增加

1
2
3
4
5
6
# 基于 yaml 创建
kubectl apply -f test.yaml

# 直接使用命令创建
# 一般用于测试,exit退出后则删除
kubectl run -i --tty --image [image_name] test --restart=Never --rm sh

修改

1
2
3
4
5
# 修改副本
kubectl scale deployment xxx --replicas=0

# 在线编辑
kubectl edit deployment xxx

删除

1
2
3
4
5
# 删除一个资源
kubectl delete deloyment xxx

# 删除配置文件中的资源
kubectl delete -f test.yaml

进入pod内

1
2
3
4
5
6
7
# 具有 bash 命令的 Pod
kubectl exec -ti [pod_name] bash/sh
-i # 进入终端
-tty # 交互的方式

# 没有 bash 命令的 Pod
crictl inspect [container]

k8s资源

Pod资源

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

Pod 的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离方面, 即用来隔离容器的技术。 在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。

Pod 示例:

一个运行 nginx:1.14.2 容器的 Pod

1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80

使用 kubectl 创建 Pod

1
kubectl apply -f https://k8s.io/examples/pods/simple-pod.yaml

Pod 通常不是直接创建的,而是使用工作负载资源创建的。

通常不需要直接创建 Pod,甚至单实例 Pod。相反,你会使用诸如 DeploymentJob 这类工作负载资源来创建 Pod。 如果 Pod 需要跟踪状态,可以考虑 StatefulSet 资源。

每个 Pod 都旨在运行给定应用程序的单个实例。如果希望横向扩展应用程序 (例如,运行多个实例以提供更多的资源),则应该使用多个 Pod,每个实例使用一个 Pod。 在 Kubernetes 中,这通常被称为副本(Replication)。 通常使用一种工作负载资源及其控制器来创建和管理一组 Pod 副本。