Kubernetes学习目录
1、语法
1.1、语法解析
命令格式:
kubectl [command] [TYPE] [NAME] [flags]
参数解析:
command:操作Kubernetes资源对象的子命令,常见的有create、delete、describe、get等
create 创建资源对象 describe 查找资源的详细信息
delete 删除资源对象 get 获取资源基本信息
TYPE:Kubernetes资源类型,举例:结点的资源类型是nodes,缩写no
NAME: Kubernetes资源对象的名称,可以省略。
flags: 可选参数
2、K8S资源缩写名称
2.1、最基础资源对象
全称 缩写
pod/pods po
node/nodes no
2.2、最常见资源对象
资源对象全称 缩写
replication controllers rc
horizontal pod autoscalers hpa
replica sets rs
persistent volume pv
deployment deploy
persistent volume claims pvc
services svc
2.3、其他资源对象
资源对象全称 缩写
namespaces ns
storage classes sc
config maps cm
clusters
daemon sets ds
stateful sets
endpoints ep
secrets
events ev
jobs
ingresses ing
2.4、资源查看
注意:
所有的资源名称都是首字母大写
更全资源可以通过 kubectl api-resources 命令来查看,默认有 56种资源。
# kubectl api-resources | grep -v 'NAME' | wc -l
3、简单查询实践
3.1、命令的介绍
3.1.1、查看资源对象
kubectl get node/nodes <-o yaml/json/wide | -w>
参数解析:
-w 是实时查看资源的状态。
-o 是以多种格式查看资源的属性信息
--raw 从api地址中获取相关资源信息
3.1.2、描述资源对象
kubectl describe node/nodes
注意:
这个命令非常重要,一般我们排错时候,就用它。
3.2、查询节点相关的参数
[root@master1 ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane 99m v1.25.7
node1 Ready <none> 95m v1.25.7
node2 Ready <none> 95m v1.25.7
[root@master1 ~]# kubectl describe node master1
3.3、获取特定信息
[root@master1 ~]# kubectl -n kube-system get pods etcd-master1 -o go-template={{.status.podIP}}
192.168.10.26
4、应用实践
4.1、布署nginx
4.1.1、创建nginx
kubectl create deployment nginx --image=nginx
4.1.2、开放访问端口
# --port 指的是nginx的端口
kubectl expose deployment nginx --port=80 --type=NodePort
4.1.3、查询svc和pods
[root@master1 ~]# kubectl get svc,pods -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 117m <none>
service/nginx NodePort 10.108.127.167 <none> 80:30662/TCP 2m54s app=nginx
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/nginx-76d6c9b8c-gzzvc 1/1 Running 0 3m50s 10.244.1.17 node1 <none> <none>
# 注意:这里的 NodePort 代表在所有的节点主机上都开启一个能够被外网访问的端口 30662
4.1.4、测试nginx是否正常访问
[root@master1 ~]# curl 192.168.10.29:30662
4.1.5、查看资源的访问日志
kubectl logs nginx-76d6c9b8c-gzzvc
4.1.6、查看资源的详情信息
kubectl describe pods nginx-76d6c9b8c-gzzvc
4.1.7、进入容器查看信息
kubectl exec -it nginx-76d6c9b8c-gzzvc -- bash
4.2、pod的扩容缩容
4.2.1、扩容
# 1、扩容
[root@master1 ~]# kubectl scale --replicas=3 deployment nginx
[root@master1 ~]# kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/3 3 2 10m
[root@master1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-76d6c9b8c-6nxgx 1/1 Running 0 22s 10.244.2.11 node2 <none> <none>
nginx-76d6c9b8c-gzzvc 1/1 Running 0 11m 10.244.1.17 node1 <none> <none>
nginx-76d6c9b8c-mg5m5 1/1 Running 0 22s 10.244.2.10 node2 <none> <none>
4.2.2、缩容
# 2、缩容
[root@master1 ~]# kubectl scale --replicas=1 deployment nginx
deployment.apps/nginx scaled
[root@master1 ~]# kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 11m
4.3、pod的版本更新
kubectl help set image
kubectl set image deployment/nginx nginx='nginx:1.11.0' --record=true
kubectl get deployment
查看版本更新状态和历史
kubectl rollout status deployment nginx
kubectl rollout history deployment nginx
撤销更改
kubectl rollout undo deployment nginx
kubectl rollout history deployment nginx
回到指定版本
kubectl rollout undo --to-revision=2 deployment nginx
kubectl rollout history deployment nginx
4.4、删除资源
4.4.1、删除deployment资源
kubectl delete deployments nginx
4.4.2、删除svc资源
4.4.3、注意
注意:
删除资源有两种方式
方法1:
kubectl delete 资源类型 资源1 资源2 ... 资源n
因为限制了资源类型,所以这种方法只能删除一种资源
方法2:
kubectl delete 资源类型/资源
因为删除对象的时候,指定了资源类型,所以我们可以通过这种资源类型限制的方式同时删除多种类型资源