Docker&K8s---K8s管理资源的三种基本方法
陈述式管理方法
主要依赖命令行CLI工具进行管理
查看相关信息
get
Usage: kubectl get resource [-o wide|json|yaml] [-n namespace]
Man: 获取资源的相关信息,-n 指定名称空间,-o 指定输出格式
resource可以是具体资源名称,如pod nginx-xxx;也可以是资源类型,如pod;或者all(仅展示几种核心资源,并不完整)
-A, --all-namespace 表示显示所有名称空间
命令
kubectl get namespace # 查看名称空间
kubectl get ns # 查看名称空间 简写
kubectl get all [-n default] # 查看deafult名称空间种的所有资源
kubectl get deployment -n app # 查看app名称空间中的deployment
kubectl get deployment -o wide -n app # 扩展查看app名称空间中的deployment
kubectl get pods -n app # 查看pod
describe
Usage: kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [-n namespace]
Man: 描述某个资源信息
命令
kubectl describe deployment -n app # 详细描述app名称空间中的deployment
kubectl describe svc nginx-dp -n kube-public # 查看service
Name: nginx-dp
Namespace: kube-public
Labels: app=nginx-dp
Annotations: <none>
Selector: app=nginx-dp
Type: ClusterIP
IP: 192.168.185.100
Port: <unset> 80/TCP
TargetPort: 80/TCP
Endpoints: 172.17.22.2:80
Session Affinity: None
Events: <none>
创建资源
creeate
Uage: kubectl create -f filename.yaml
kubectl create resourece [options]
Man: 根据清单文件或者指定的资源参数创建资源
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: nginx-ds
spec:
template:
metadata:
labels:
app: nginx-ds
spec:
containers:
- name: my-nginx
image: harbor.od.com/public/nginx:v1.7.9
ports:
- containerPort: 80
命令
# 创建名称空间
kubectl create namespace app # 创建名称空间app
kubectl create ns app # 创建名称空间app
# 创建deployment
kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n app # 创建deployment 名字叫nginx-dp 镜像harbor的nginx 在app这个名称空间中
kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public
# 创建service资源
Usage: Usage: kubectl expose TYPE NAME [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=n] [--name=name] [--external-ip=external-ip-of-service] [options]
Man: TYPE为deployment,NAME为depoly资源名称,port和target-port分别为集群和pod的端口
kubectl expose deployment nginx-dp --port=80 -n kube-public # 暴露80端口
删除资源
delete
Usage: kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options]
Man: 删除指定资源
命令
kubectl delete ns app # 删除名称空间app
kubectl delete pod nginx-dp-dasda -n app # 删除pod资源(重启)
kubectl delete deployment nginx-dp -n app
进入容器
exec
Usage: kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...] [options]
命令
kubectl exec POD_NAME COMMAND
kubectl exec -ti nginx-dp-567dasdas89 /bin/bash -n app # 进入pod资源
# 也可以通过docker exec进去
陈述式资源管理方法小结:
1.kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口
2.kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为 apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径
3.kubectl的命令大全
kubectl --help
声明式管理方法
主要依赖统-资源配置清单( manifest )进行管理
usage:
kubectl create/apply/delete -f /path/to/yaml
# 查看看POD_NAME的资源配置清单
kubectl get pods nginx-dp-5dfc689474-wg52z -o yaml -n kube-public
# 解释
kubectl explain service.metadata
# 创建资源配置清单 service
vi nginx-ds-svc.yaml
apiVersion: extensions/v1beta1
kind: Service
metadata:
name: nginx-ds
spec:
template:
metadata:
labels:
app: nginx-ds
spec:
containers:
- name: my-nginx
image: harbor.od.com/public/nginx:v1.7.9
ports:
- containerPort: 80
kubectl create -f nginx-ds.yaml
# 在线修改资源清单
kubectl edit svc nginx-ds
# 离线修改
vi nginx-ds.yaml
修改。。。。
kubectl apply -f nginx-ds.yaml
GUI式管理方法
图像化界面点点点