一、陈述式管理
1.1、陈述式资源管理方法
- kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
- kubectl 是官方的 CLI 命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
- kubectl 的命令大全
- kubectl --help
-
k8s官方中文文档:http://docs.kubernetes.org.cn/683.html
- 对资源的增、删、查操作比较容易,但对改的操作就不容易了
二、K8S相关信息查看
2.1 查看版本信息
kubectl version
2.2 查看节点信息
kubectl get nodes
2.3 查看资料对象简写
kubectl api-resources
2.4 查看集群信息
kubectl cluster-info
2.5 配置kubectl自动补全
source <(kubectl completion bash)
可通过TAB键实现命令补全,建议将其写入 /etc/profile或是~/.bashrc
2.6 查看日志
journalctl -u kubelet -f
三、 查看基本信息
##命令格式:
kubectl get [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n指定命名空间,-o指定输出格式
resource可以是具体资源名称,如"pod nhinx-xxx";也可以是资源类型,如“pod,node,svc,deploy”多种资源使用逗号间隔;或者all(仅展示几种核心资源,并不完整)
- –all-namespaces或-A:表示显示所有命名空间
- –show-labels:显示所有标签
- -l app:仅显示标签为app的资源
- -l app=nginx:仅显示包含app标签,且值为nginx的资源
3.1、 查看master节点状态
kubectl get componentstatuses#componentstatues可以缩写成cs
kubectl get cs
3.2、 查看命名空间
kubectl get namespace#namespace可以缩写成ns
kubectl get ns
获取所有命名空间中的 Pod 列表
kubectl get pod --all-namespaces kubectl get pod -A#获取所有命名空间中的 Pod 列表
3.3、 查看default命名空间的所有资源
kubectl get all [-n default]
由于deafult为缺省空间,当不指定命名空间时默认查看default命名空间
3.4、创建命名空间
kubectl create ns lyhdb
kubectl get ns
同一命名空间不能有相同的名字,不同命名空间可以有相同的名字
3.5、删除命名空间
kubectl delete namespaces lyhdb
kubectl get ns
可以删除,但是如果这个命名空间下面有资源,资源就都会被删除,再三考虑哦
3.6、在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-ab)
kubectl create deployment nginx-ab --image=nginx -n kube-public#这个命令 kubectl create deployment nginx-ab --image=nginx -n kube-public 用于在命名空间 kube-public 中创建一个名为 nginx-ab 的 Deployment,并使用 nginx 镜像作为 Deployment 中的容器。kubectl:Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互。
create deployment nginx-ab:创建一个名为 nginx-ab 的 Deployment。
--image=nginx:指定 Deployment 中要使用的容器镜像为 nginx。
-n kube-public:指定要将 Deployment 创建在 kube-public 命名空间中。
kubectl create <pod控制器名> <pod名称> --image=镜像名
Deployment:无状态应用部署
Statefulset:有状态应用部署
Replicaset:副本数量控制器
Daemonset:确保所有节点运行同一类 Pod
Cronjob:计划性任务
示例二
用kubectl create 创建
用于创建deployment 控制器管理的pod
用run直接创建
run:用于创建一个自主式/静态 Pod
[root@master01 ~]#kubectl run qqq --image=nginx -n kube-public ##创建qqq
[root@master01 ~]#kubectl get pod -n kube-public
[root@master01 ~]#kubectl delete pod qqq -n kube-public ##删除qqq
[root@master01 ~]#kubectl get pod -n kube-public
3.7、描述某个资源的详细信息
kubectl describe deployment nginx-ab -n kube-publickubectl describe pod nginx-aa-66b8d4497f-cdj44 -n kube-public
3.8、查看命名空间kube-public中的pod信息
kubectl get pods -n kube-public
3.9、kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录
[root@master01 ~]#kubectl exec -it nginx-ab-5f7467856-69mtq bash -n kube-public
示例二
[root@master01 ~]#kubectl get pods -n kube-public [root@master01 ~]#kubectl exec -it nginx-abc-64d49d89f5-lf8vc bash -n kube-public
kubectl get pods -n kube-public -owide#用于获取在 kube-public 命名空间中运行的所有 Pods 的详细信息,包括它们的名称、状态、IP 地址等。 -n kube-public 参数指定了命名空间为 kube-public,而 -owide 参数指定了输出的格式为 wide,这样可以显示更多的列。#将会列出在 kube-public 命名空间中运行的所有 Pods,并显示它们的详细信息。
3.10、删除(重启)pod资源,由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来
kubectl delete pod nginx-ab-5f7467856-69mtq -n kube-public
若pod无法删除,总是处于terminate状态,则要强行删除pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod
3.11、扩缩容
kubectl scale deployment nginx-bb --replicas=5 -n kube-public # 扩容kubectl scale deployment nginx-bb --replicas=2 -n kube-public # 缩容kubectl scale pod控制器类型 资源名称 --replicas=副本数 -n 命名空间
##副本数决定扩容还是缩容
3.11.1 扩容
kubectl create deployment nginx-qw --image=nginx -n kube-public
kubectl get pods -n kube-public
kubectl scale deployment nginx-qw --replicas=5 -n kube-public ##扩容5个副本
3.11.2缩容
##在扩容的基础上进行缩容
kubectl scale deployment nginx-qw --replicas=2 -n kube-public
3.12、删除副本控制器
kubectl get pods -n kube-public
kubectl delete deployments nginx-qw -n kube-public
kubectl get pods -n kube-public
kubectl delete deployment/nginx-ab -n kube-public
kubectl delete deployment/nginx-abc -n kube-public
kubectl delete deployment/abc -n kube-public
kubectl get pods -n kube-public
3.13、查看标签
kubectl get pod --show-labels #查看所有资源的标签
kubectl get pod -l app #指定标签的键查看,只显示标签为app的资源
kubectl get pod -l app -A
kubectl get pod -l app=nginx-deployment #显示包含app标签且值为nginx的资源
kubectl get pod -l app=nginx-deployment
kubectl get pod -l app=nginx-deployment -A