1.陈述式-主要依赖命令行工具 --可以满足90%以上的使用场景,但是缺点也很明显:
命令冗长,复杂,难以记忆
特定场景下,无法实现管理需求
对资源的增、删、查操作比较容易,改比较麻烦,需要patch来使用json串来更改。
1.1 查看名称空间
[root@k8s4 ~]# kubectl get namespace = kubectl get ns
NAME STATUS AGE
default Active 5d3h
kube-node-lease Active 5d3h
kube-public Active 5d3h
kube-system Active 5d3h
1.2 查看default名称空间到所有的资源
[root@k8s4 ~]# kubectl get all -n default
NAME READY STATUS RESTARTS AGE
pod/nginx-ds-wczmm 1/1 Running 0 4d20h
pod/nginx-ds-xgsss 1/1 Running 0 4d20h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 192.168.0.1 <none> 443/TCP 5d3h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/nginx-ds 0 0 0 0 0 <none> 4d20h
1.3创建和删除名称空间
kubectl create ns app 创建名为app名称空间
kubectl delete namespace app 删除名为app的名称空间
1.4创建管理Deployment pod控制器 (pod控制器用来保证资源运行始终无限接近与提前设定的值)
kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public #在kub-public命名空间创建了deployment类型pod控制器,pod控制器里面使用的镜像是harbor仓库里面的nginx
kubectl get deployment -n kube-public #查看
[root@k8s4 ~]# kubectl get pods -n kube-public -o wide #扩展查看
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-dp-5dfc689474-dqng9 1/1 Running 0 11m 172.7.22.3 k8s4.host.com <none> <none>
nginx-dp 为pod控制器的名字
nginx-dp-5dfc689474-dqng9 为pod名字
kubectl describe deployment nginx-dp -n kube-public #详细查看
1.5进入pod资源
kubectl exec -it nginx-dp-5dfc689474-dqng9 /bin/bash -n kube-public #也可以用docker exec进入
1.6删除pod资源
kubectl delete pod nginx-dp-5dfc689474-dqng9 -n kube-public #相当与重启 pod会切换到另外的计算节点
pod删除了但是pod控制器没有被删除,pod控制器预期是要有一个pod的,所以pod控制器会帮你在拉起一个pod,要想删除必须删除pod控制器
kubectl delete pod nginx-dp-5dfc689474-dqng9 -n kube-public --force --grace-period=0 强制删除
kubectl delete deployment nginx-dp -n kube-public #删除deployment pod控制器
1.7 创建/管理service资源
kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public
kubectl describe svc nginx-dp -n kube-public #查看 service依赖Labels/Selector 凡是Labels/Selector 等于nginx-dp 又在kube-public空间内,就会匹配,通过标签选择器把pod service绑定
Name: nginx-dp
Namespace: kube-public
Labels: app=nginx-dp
Annotations: <none>
Selector: app=nginx-dp
Type: ClusterIP
IP: 192.168.198.239
Port: <unset> 80/TCP
TargetPort: 80/TCP
Endpoints: 172.7.22.3:80
Session Affinity: None
Events: <none>
kubectl get all -n kube-public
给pod资源创建service资源,上述删除实验,pod资源ip发生了迁移,pod不能稳定的对外服务了,需要引进server概念稳定的提供接入点
kubectl expose deployment nginx-dp --port=80 -n kube-public #expose 暴露80端口
[root@k8s3 ~]# kubectl get all -n kube-public
NAME READY STATUS RESTARTS AGE
pod/nginx-dp-5dfc689474-62f25 1/1 Running 0 9m57s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx-dp ClusterIP 192.168.198.239 <none> 80/TCP 29s #再次查看pod资源,多出了service资源,有ip地址和端口,这个ip是不会发生变化的
测试查看
curl 192.168.198.239
[root@k8s4 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.1:443 nq
-> 10.4.7.21:6443 Masq 1 0 0
-> 10.4.7.22:6443 Masq 1 0 0
TCP 192.168.198.239:80 nq #前端地址
-> 172.7.22.3:80 Masq 1 0 1 #后端地址
扩容,查看nginx-dp变化
kubectl scale deployment nginx-dp --replicas=2 -n kube-public #扩容
[root@k8s4 ~]# ipvsadm -Ln #再次查看前端不变
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.1:443 nq
-> 10.4.7.21:6443 Masq 1 0 0
-> 10.4.7.22:6443 Masq 1 0 0
TCP 192.168.198.239:80 nq
-> 172.7.21.3:80 Masq 1 0 0
-> 172.7.22.3:80 Masq 1 0 0
http://docs.kubernetes.org.cn/683.html kubectl命令学习文档
2.声明式-依赖统一资源配置清单(manifest) yaml/json 进行管理
2.1 查看资源配置清单
kubectl get pods nginx-dp-5dfc689474-62f25 -o yaml -n kube-public #yaml 格式的资源配置清单 = kubectl get service(svc) nginx-dp -o yaml -n kube-public
kubectl explain svc.metadata #解释资源配置清单
2.2创建资源配置清单
vi nginx-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-ds
name: nginx-ds
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-ds
sessionAffinity: None
type: ClusterIP
2.3创建和查看
kubectl create -f nginx-ds-svc.yaml
kubectl get svc -n default
2.4修改资源配置清单
vi nginx-ds-svc.yaml #修改里面的配置在apply
kubectl apply -f ginx-ds-svc.yaml
修改资源配置清单分为离线和在线。上面的方法是离线
kubectl edit svc nginx-ds -n default #这个方法是在线修改
2.5删除资源配置清单
kubectl delete svc nginx-ds 陈述式删除
kubectl delete -f nginx-ds-svc.yaml 声明式删除
3.GUI式-主要依赖图形化操作界面(web界面)