一、基础命令
资源类型 | 资源简称 |
---|---|
node | no |
namespaces | ns |
deployment | deploy |
ReplicaSet | rs |
pod | po |
service | svc |
ingress | ing |
DaemonSets | ds |
StatefulSets | sts |
ConfigMap | cm |
PersistentVolume | pv |
PersistentVolumeClaim | pvc |
HorizontalPodAutoscaler | hpa |
ComponentStatus | cs |
# 创建一个deployment
cat >> nginx-deploy-test.yaml < EOF
apiVersion: apps/v1 #版本信息
kind: Deployment #资源信息
metadata: #元数据
name: nginx-deploy #资源名称
namespace: default #属于哪个命名空间下
spec:
replicas: 2 #一共有两个副本资源
selector:
matchLabels:
app: nginx
template: #pod创建模板
metadata:
labels:
app: nginx
spec:
containers: #容器名称下边的容器可以有多个
- image: nginx #镜像名称
imagePullPolicy: IfNotPresent #镜像拉取策略
name: nginx-test #容器名称
restartPolicy: Always #重启策略
EOF
#部署上面的pam 资源
kubectl apply -f nginx-deploy-test.yaml
#也可以使用命令行方式,直接创建
kubectl create deploy nginx --image=nginx
#查看K8S版本信息
kubeadm version
kubectl version
kubelet --version
#查看pod 信息
kubectl get po -o wide
#查看deployment信息
kubectl get deploy
#查看rs 信息
kubectl get rs -o wide
#暴露service端口
kubectl expose deploy nginx-deploy --type=NodePort --port=80 --target-port=8000
#查看service
kubectl get svc
#查看K8S命名空间
kubectl get ns
#查看资源yaml信息,举例:kubectl get 资源名称 -o yaml -n 命名空间,如果命名空间不填默认为default
kubectl get deploy nginx-deploy -o yaml -n default
#进入k8s运行的容器
kubectl exec demo-deploy-64575b5d97-txb4w -it -- /bin/bash
#退出容器
exit
#查看K8S集群健康状况
kubectl get cs
##create 方式基于端口做映射,expose 方式基于服务做映射
##创建无头服务
kubectl create svc clusterip nacos-headless --clusterip=None --tcp=8848:8848
##创建NodePort服务
kubectl create svc nodeport nacos-nodeport --tcp=8848:8848 --node-port=30848
##端口暴露NodePort
kubectl expose deploy nginx-deploy --type=NodePort --port=80 --target-port=8000
##创建ingress
##kubectl create ingress 名称 --rule=访问路径 / 匹配方式=svc的名称:端口
kubectl create ingress nginx-ing --rule=www.digua.com/*=nginx-deploy:80
#查看日志 查看报错
kubectl logs pod名称 -n 命名空间
#查看资源信息
kubectl describe deploy deploy名称 -n 命名空间
#标签查看
kubectl get 资源类型 --show-labels
kubectl get no --show-labels
#标签制作
kubectl label 资源类型 资源名称 标签key=标签value
kubectl label no slave cpu=8cup32g
#修改资源信息举例: kubectl edit 资源类型 资源名称 -n 命名空间
#如果 命名空间不填 默认为 default
kubectl edit pod nginx-deploy-86597ffd87-pz5bn -n default
kubectl edit deploy nginx-deploy
kubectl edit rs nginx-deploy-86597ffd87
#如果 yaml 文件有变动,运行apply 也是更新操作
kubectl apply -f nginx-deploy-test.yaml
#删除资源 kubectl delete 资源类型 资源名称 -n 命名空间 如果 命名空间不填 默认为 default
1.1 删除单个pod,如果pod是由deploy等创建的是无法完全删除,因为pod停止后,scheduler会重新扫描后再创建
kubectl delete po nginx-deploy-86597ffd87-djkws
#删除默认命名空间下所有的pod,下边的删除也是同样的,只是改一下资源类型
kubectl delete po --all
1.2 删除rs,删除rs后 对应下边的pod也会删除,如果rs是通过deploy创建,会自动重新创建并顺便创建下边的pod
kubectl delete rs nginx-deploy-86597ffd87
1.3 删除deployment,删除deploy后下变得rs和pod都会被删除
kubectl delete deploy nginx-deploy
1.4 删除命名空间,删除命名空间后下边所有的pod、deploy、svc、rs都会删除
kubectl delete ns default
1.5 强制删除pod
kubectl delete po nginx-deploy-86597ffd87-djkws --force --grace-period=0
#查看资源使用(cpu、内存使用)
kubectl top no
#滚动发布 滚动发布会保留deploy,会重新制作一个rs取代之前的rs
#kubectl set image 资源类型/资源名 容器名称=镜像
kubectl set image deploy/test-deploy test=192.168.34.8:85/public/test:2
#版本回滚
##查看历史版本信息 kubectl rollout history 资源类型/资源名
kubectl rollout history deploy/test-deploy
##根据历史版本信息,指定版本进行回滚 kubectl rollout undo 资源类型/资源名 --to-revision=版本
kubectl rollout undo deploy/test-deploy --to-revision=4
#scale (pod扩容)、autoscale(自动扩容)
kubectl scale --replicas=资源数量 资源类型/资源名称
##kubectl autoscale 资源类型 资源名称 --min=最小pod数量 --max=最大pod数量 --cpu-percent=CPU达到40%时候
kubectl autoscale deploy nginx-deploy --min=1 --max=3 --cpu-percent=40
##查看自动扩容信息
kubectl get hpa
secret (k8s 拉取harbor镜像配置)
#kubectl create secret docker-registry 名称 --docker-server=harbor的ip+端口 --docker-username=用户名 --docker-password=密码 --docker-email=邮箱(非必填)
kubectl create secret docker-registry 34.8harborregistry --docker-server=192.168.34.8:85 --docker-username=admin --docker-password=Harbor@2022 --docker-email=123@qq.com