k8s常用命令备份 及 参考网址收藏:

一、k8s中文文档

https://kubernetes.io/zh/docs/home/

二、查看k8s端口汇总时,发现一个文档比较齐全的网址

https://www.kancloud.cn/pshizhsysu/kubernetes/2064652

三、kubectl 查看 csr证书请求与批准

#查看 kubelet 证书请求 
kubectl get csr 
NAME AGE SIGNERNAME REQUESTOR CONDITION 
node-csr-uCEGPOIiDdlLODKts8J658HrFq9CZ--K6M4G7bjhk8A 6m3s kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending 
 
 #批准申请 
kubectl certificate approve node-csr-uCEGPOIiDdlLODKts8J658HrFq9CZ--K6M4G7bjhk8A 
# 查看节点 
kubectl get node

四、K8s - 手动删除一个Node节点教程(附:删除节点后再重新添加进去)

1,需求描述
在使用 K8s 集群的时候可能会遇到这种情况:发现其中一台 Node 节点出了问题,想将其删除再换一个节点。
原文:K8s - 手动删除一个Node节点教程(附:删除节点后再重新添加进去)

2,操作步骤
(1)假设我们需要删除 k8s-node1 这个节点,首先在 master 节点上依次执行以下两个命令:
1
2
kubectl drain k8s-node1 --delete-local-data --force --ignore-daemonsets
kubectl delete node k8s-node1
执行后通过 kubectl get node 命令可以看到 k8s-node1 已被成功删除:
原文:K8s - 手动删除一个Node节点教程(附:删除节点后再重新添加进去)

(2)接着在 k8s-node1 这个 Node 节点上执行如下命令,这样该节点即完全从 Cluster 中脱离开来:

kubeadm reset

附:将 Node 节点重新加入
当一个 Node 节点通过上述方式从 Cluster 中删除后,如果需要重新添加进去的话,再次执行 join 方法即可:

原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_3025.html

五、K8S yaml文件详解

https://www.cnblogs.com/shunzi115/p/12392784.html

六、常用命令收集

查看所有namespace的pods运行情况

kubectl get pods --all-namespaces

查看具体pods,记得后边跟namespace名字哦

kubectl get pods kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system

查看pods具体信息

kubectl get pods -o wide kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system

查看集群健康状态

kubectl get cs

获取所有deployment

kubectl get deployment --all-namespaces

列出该 namespace 中的所有 pod 包括未初始化的

kubectl get pods --include-uninitialized

查看deployment()

kubectl get deployment nginx-app

查看rc和servers

kubectl get rc,services

查看pods结构信息(重点,通过这个看日志分析错误)对控制器和服务,node同样有效

kubectl describe pods xxxxpodsname --namespace=xxxnamespace

其他控制器类似吧,就是kubectl get 控制器 控制器具体名称
查看pod日志

kubectl logs $POD_NAME

查看pod变量

kubectl exec my-nginx-5j8ok -- printenv | grep SERVICE
kubectl get cs #### 集群健康情况
kubectl cluster-info #### 集群核心组件运行情况
kubectl get namespaces #### 表空间名
kubectl version #### 版本
kubectl api-versions #### API
kubectl get events #### 查看事件
kubectl get nodes //获取全部节点
kubectl delete node k8s2 //删除节点
kubectl rollout status deploy nginx-test

创建

kubectl create -f ./nginx.yaml #### 创建资源
kubectl create -f . #### 创建当前目录下的所有yaml资源
kubectl create -f ./nginx1.yaml -f ./mysql2.yaml #### 使用多个文件创建资源
kubectl create -f ./dir #### 使用目录下的所有清单文件来创建资源
kubectl create -f https://git.io/vPieo #### 使用 url 来创建资源
kubectl run -i --tty busybox --image=busybox ----创建带有终端的pod
kubectl run nginx --image=nginx #### 启动一个 nginx 实例
kubectl run mybusybox --image=busybox --replicas=5 ----启动多个pod
kubectl explain pods,svc #### 获取 pod 和 svc 的文档

更新

kubectl rolling-update python-v1 -f python-v2.json #### 滚动更新 pod frontend-v1
kubectl rolling-update python-v1 python-v2 --image=image:v2 #### 更新资源名称并更新镜像
kubectl rolling-update python --image=image:v2 #### 更新 frontend pod 中的镜像
kubectl rolling-update python-v1 python-v2 --rollback #### 退出已存在的进行中的滚动更新
cat pod.json | kubectl replace -f - #### 基于 stdin 输入的 JSON 替换 pod

强制替换,删除后重新创建资源。会导致服务中断。

kubectl replace --force -f ./pod.json

为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口

kubectl expose rc nginx --port=80 --target-port=8000

更新单容器 pod 的镜像版本(tag)到 v4

kubectl get pod nginx-pod -o yaml | sed 's/(image: myimage):.*$/\1:v4/' | kubectl replace -f -
kubectl label pods nginx-pod new-label=awesome #### 添加标签
kubectl annotate pods nginx-pod icon-url=http://goo.gl/XXBTWq #### 添加注解
kubectl autoscale deployment foo --min=2 --max=10 #### 自动扩展 deployment “foo”

编辑资源

kubectl edit svc/docker-registry #### 编辑名为 docker-registry 的 service
KUBE_EDITOR="nano" kubectl edit svc/docker-registry #### 使用其它编辑器

动态伸缩pod

kubectl scale --replicas=3 rs/foo #### 将foo副本集变成3个
kubectl scale --replicas=3 -f foo.yaml #### 缩放“foo”中指定的资源。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql #### 将deployment/mysql从2个变成3个
kubectl scale --replicas=5 rc/foo rc/bar rc/baz #### 变更多个控制器的数量
kubectl rollout status deploy deployment/mysql #### 查看变更进度

删除

kubectl delete -f ./pod.json #### 删除 pod.json 文件中定义的类型和名称的 pod
kubectl delete pod,service baz foo #### 删除名为“baz”的 pod 和名为“foo”的 service
kubectl delete pods,services -l name=myLabel #### 删除具有 name=myLabel 标签的 pod 和 serivce
kubectl delete pods,services -l name=myLabel --include-uninitialized #### 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
kubectl -n my-ns delete po,svc --all #### 删除 my-ns namespace下的所有 pod 和 serivce,包括尚未初始化的
kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force 强制删除

交互

kubectl logs nginx-pod #### dump 输出 pod 的日志(stdout)
kubectl logs nginx-pod -c my-container #### dump 输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
kubectl logs -f nginx-pod #### 流式输出 pod 的日志(stdout)
kubectl logs -f nginx-pod -c my-container #### 流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
kubectl run -i --tty busybox --image=busybox -- sh #### 交互式 shell 的方式运行 pod
kubectl attach nginx-pod -i #### 连接到运行中的容器
kubectl port-forward nginx-pod 5000:6000 #### 转发 pod 中的 6000 端口到本地的 5000 端口
kubectl exec nginx-pod -- ls / #### 在已存在的容器中执行命令(只有一个容器的情况下)
kubectl exec nginx-pod -c my-container -- ls / #### 在已存在的容器中执行命令(pod 中有多个容器的情况下)
kubectl top pod POD_NAME --containers #### 显示指定 pod和容器的指标度量

调度配置

kubectl cordon k8s-node #### 标记 my-node 不可调度
kubectl drain k8s-node #### 清空 my-node 以待维护
kubectl uncordon k8s-node #### 标记 my-node 可调度
kubectl top node k8s-node #### 显示 my-node 的指标度量
kubectl cluster-info dump #### 将当前集群状态输出到 stdout
kubectl cluster-info dump --output-directory=/path/to/cluster-state #### 将当前集群状态输出到 /path/to/cluster-state

如果该键和影响的污点(taint)已存在,则使用指定的值替换

kubectl taint nodes foo dedicated=special-user:NoSchedule

以上部分命令参考自:https://debian.cn/articles/633?www


七、以下为学习过程中记录的命令

1、导出yaml文件, --dry-run 表示不运行; -o yaml 生成对应的yaml
2、应用yaml部署应用
3、对外发布(暴露端口),service相关

#导出yaml文件
kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
#应用yaml部署应用
kubectl apply -f web.yaml

#对外暴露端口 ,会生成一个Service类型的yaml
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml
#通过刚才生成的yaml ,部署Service,
kubectl apply -f web1.yaml
#查看暴露的端口(service)
kubectl get service -o wide

访问 任意node的ip:32449 可访问到上面暴露的端口
在这里插入图片描述
4、controller中的deployment 应用升级回滚和弹性伸缩

升级前的yaml配置的版本号为nginx:1.14
升级前的yaml配置的版本号为nginx:1.14

#直接设置deployment的新镜像版本号
kubectl set image deployment web nginx=nginx:1.15
#查看升级状态
kubectl rollout status deployment web

直接设置deployment的新镜像版本号查看升级状态
过程为滚动更新,如下图,目前旧版本的还在运行,新版本还在下载镜像中
在这里插入图片描述

#查看deployment历史版本
kubectl rollout history deployment web
#回滚到上一个版本
kubectl rollout undo deployment web
#回滚到指定版本
kubectl rollout undo deployment web --to-revision=2
#查看deployment的image的版本
kubectl get deployment -o wide

#弹性伸缩,指定yaml中的应用的副本数
kubectl scale --replicas=2 -f web.yaml 
#弹性伸缩,指定web这个deployment的副本数
kubectl scale deployment web --replicas=2

查看deployment历史版本
回滚到上一个版本
回滚到指定版本
查看deployment的image的版本

5、进入一个pod中的命令行环境

#进入一个pod中的命令行环境 
kubectl exec -it ds-test-cmjkd bash

6、删除一个yaml中的应用

kubectl delete -f job.yaml

7、helm相关
7.1)配置helm仓库
 微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库推荐,基本 上官网有的 chart 这里都有。
 阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )
 官方仓库(https://hub.kubeapps.com/charts/incubator)官方 chart 仓库,国 内有点不好使。

#添加存储库 
helm repo add stable http://mirror.azure.cn/kubernetes/charts 
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
#更新仓库地址
helm repo update 
#查看配置的存储库
helm repo list 
helm search repo stable 
#删除存储库:
 helm repo remove aliyun

7.2)使用helm快速部署应用

#1.使用命令搜索应用
#helm search repo 名称(weave)
helm search repo weave

#2.根据搜索内容选择安装 chart
#helm install 安装之后的名称 搜索之后应用名称
helm install ui aliyun/weave-scope

#3.查看安装之后的状态
helm list
helm status 安装之后的名称

#修改service的yaml文件,type改为NodePort 。修改运行中的service的yaml,将ClusterIP改为NodePort
#如果保存失败,记得看上面的提示信息,可能是单词拼错
kubectl edit svc ui-weave-scope

#删除安装的chart:    helm uninstall chart
helm uninstall web

在这里插入图片描述
7.3)如何自己创建chart

#1.使用命令创建chart
helm create mychart
#进入创建的chart模板
cd mychart/

#2.在templates 创建自己的deployment 、 service 两个yaml文件 
kubectl create deployment web-heml --image=nginx --dry-run -o yaml > mydeployment.yaml
kubectl apply -f mydeployment.yaml  #先创建,后面删除。不创建的话,后面创建NodePort会报错
kubectl expose deployment web-heml --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > myservice.yaml
kubectl delete web-heml

#3.安装mychart  helm install 自定义chart名称 chart配置文件夹
helm install myweb mychart/

#4.应用升级  helm upgrade chart名称 chart配置文件夹
helm upgrade myweb mychart/

在这里插入图片描述
Chart.yaml :当前chart属性配置信息
templates:编写yaml文件放到这个目录
values.yaml: yaml文件可以使用全局变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.4)实现yaml高效复用

  • 通过传递参数,动态渲染模板,yaml内容动态传入参数生产
  • 在chart有values.yaml文件,定义yaml文件全局变量
#1、在Values.yaml定义变量和值
replicas: 1
image: nginx
tag: 1.16
label: nginx
port: 80


#2、在templates的yaml文件,获取定义变量值
#通过表达式刑事使用全局变量
#  {{ .Values.变量名称}}
#  {{ .Release.Name}}

#3、尝试运行 
helm install --dry-run myweb2 mychart/

#4、直接运行
helm install myweb2 mychart/

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值