1、关于svc中ClusterIP的API格式

https://localhost:6443/api/v1/namespaces/$ns/services/$svc

前提是token具有相应访问权限

//获取

token=$(kubectl describe secret $(kubectl get secret -n kube-system |grep default |awk '{print $1}') -n kube-system |grep -E '^token' |cut -f2 -d':'|tr -d '\t'|tr -d ' ')红色部分是要筛选的账户关键字

curl -k -v -X GET -H "Authorization: Bearer $token" -H "Content-Type: application/json" https://localhost:6443/api/v1 --insecure

在kubectl edit svc里有

selfLink: /api/v1/namespaces/default/services/nginx

selfLink属性就是ClusterIP访问的url

2、service的三种端口
port
service暴露在cluster ip上的端口,:port 是提供给集群内部客户访问service的入口。

nodePort
nodePort是k8s提供给集群外部客户访问service入口的一种方式,:nodePort 是提供给集群外部客户访问service的入口。

targetPort
targetPort是pod上的端口,从port和nodePort上到来的数据最终经过kube-proxy流入到后端pod的targetPort上进入容器。

3、设置当前上下文

kubectl config current-context

kubectl config set-context <current-context> --namespace test

//接下来再去执行命令默认的namespace就是test了

4、pod 状态Terminating 删除不了

//参考解决k8s 中Terminating状态的Pod删不掉的问题_安冉-CSDN博客

(1)无论各种方式生成的 pod, 均可以使用如下命令强制删除:

1

kubectl delete pods <pod> --grace-period=0 --force

 (2)因此对于上面的 pod,我们只要执行如下命令即可删除:

1

kubectl delete pods httpd-app-6df58645c6-cxgcm --grace-period=0 --force

5、StorageClass的ReclaimPolicy

//参考StorageClass的ReclaimPolicy · 大专栏

容器本身是无状态的,出现问题后随时可销毁,但保存数据的的卷不能被销毁,需要创建一个持久卷。持久卷删除时有三种回售模式,

保持(Retain):删除PV后后端存储上的数据仍然存在,如需彻底删除则需要手动删除后端存储volume
删除(Delete):删除被PVC释放的PV和后端存储volume
回收(Recycle):保留PV,但清空PV上的数据(已废弃)

6、无法删除namespace 提示 Terminating

//参考kubernetes无法删除namespace 提示 Terminating_惊云-CSDN博客

7、Ceph rbd删除image遭遇watchers异常处理

//参考Ceph rbd删除image遭遇watchers异常处理 - lswweb - 博客园

8、查看集群信息

kubectl cluster-info

9、查看docker 网络

docker network ls

//删除网络

docker network rm id号

10、打污点命令

//参考K8s中污点(Taint)详解及命令 - 云+社区 - 腾讯云

11、将pod部署到指定节点上

nodeSelector:  //使用标签标定,在node节点上打上标签,如下设置与node节点相同的标签即可
    traefik: "true"

//使用指定hostname或ip确定部署的节点
nodeName: keepalived_vri

12、pod中image拉取策略

imagePullPolicy: IfNotPresent  // Always 、 Never

13、docker中停止的容器再次运行

sudo docker start 容器号

14、私有docker仓库下载镜像需要secret

//docker pull 镜像需要secret 创建

kubectl create secret docker-registry SECRET_NAME --namespace=NAME_SPACE \ --docker-server=DOCKER_REGISTRY_SERVER
--docker-username=DOCKER_USER \ --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

15、使用helm查看项目配置信息

 helm inspect values gitlab/gitlab //gitlab是项目名称

16、docker 镜像下载到本地并恢复

参考docker镜像下载到本地,并在其他机器恢复 - 简书   

17、获取部署信息go-template 

  例如:kubectl get deploy tomcat-deploy -o go-template='{{.status.readyReplicas}}' 

输出deploy文件的status下 readyReplicas的值   

18、设置用户权限访问空间

kubectl config set-context ctx-dev \
--cluster=kubernetes \
--user=admin \
--namespace=dev \
--kubeconfig=/root/.kube/config

//设置上下文

kubectl config use-context ctx-dev --kubeconfig=/root/.kube/config

  19、多维度集群资源管理

//limits
apiVersion: v1
kind: LimitRange
metadata:
  name: test-limits
spec:
  limits:
    max:
      cpu: 4000m
      memory: 2Gi
    min:
      cpu: 100m
      memory: 100Mi
    maxLimitRequestRatio: #max同limit最大比值
      cpu: 3
      memory: 2
    type: Pod
    default:
      cpu: 300m
      memory: 200Mi
    defaultRequest:
      cpu: 200m
      memory: 100Mi
    max:
      cpu: 2000m
      memory: 1Gi
    min:
      cpu: 100m
      memory: 100Mi
    maxLimitRequestRatio:
      cpu: 5
      memory: 4
    type: Container

//compute-resource

apiVersion: v1
kind: ResourceQuota
metadata:
  name: resource-quota
#限制硬件资源占用量,可以下面的ResourceQuota合并为一个文件
spec:
  hard:
    pods: 4
    requests.cpu: 2000m
    requests.memory: 4Gi
    limits.cpu: 4000m
    limits.memory: 8Gi


//resource-quota

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
#限制资源数量,可以加上namespace
spec:  
  hard:
    configmaps: 10
    persistentvolumeclaims: 4
    replicationcontrollers: 20
    secrets: 10
    services: 10

//pod驱逐
//常见驱逐策略配置

#当内存剩余持续1m30s小于1.5G开启驱逐
--eviction-soft=memory.available<1.5Gi   
--eviction-soft-grace-period=memory.available=1m30s

#当下列条件有满足就开始驱逐(内存小于100M或硬盘小于1G,剩余nodei节点小于5%)
--eviction-hard=memory.available<100Mi,
nodefs.available<1Gi,nodefs.inodesFree<5%

20、健康检查 (containers中的 livenessProbe \ readinessProbe \ startupProbe 探针的httpGet \ tcpSocket \ exec三种用法)

参考//配置存活、就绪和启动探测器 | Kubernetes

21、deploy部署添加hosts

apiVersion: apps/v1
kind: Deployment
metadata:
  name: geowebcache
  namespace: default
spec:
  replicas: 1
  selector:
    name: geowebcache
  template:
    metadata:
      labels:
        name: geowebcache
    spec:
      hostAliases:
      - ip: 10.12.70.130
        hostnames:
        - "geoserver.shell.com"
      containers:
      - name: geowebcache
        image: core.harbor.shell.com:30934/library/geowebcache:v1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080

22、deploy 动态扩容

kubectl scale deploy geowebcache --replicas 10

23、ceph clock skew detected on mon

ceph clock skew detected on mon_mixboot-CSDN博客

24、StatefulSet和Deployment的区别 (转载)

“Deployment用于部署无状态服务,StatefulSet用来部署有状态服务”

25、clusterIP service内部访问——Headless Service

k8s容器编排之Headless浅谈

service几种访问类型

 26、  k8s master certs 过期

//参考     使用 kubeadm 进行证书管理 | Kubernetes   

//会报类似错误
shell811127@k8s70133:~$ kubectl get node
Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-03-19T09:38:18+08:00 is after 2022-03-19T01:07:18Z
//更新方法
kubeadm certs renew all
sudo docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "sudo docker","restart",$1}' | bash
sudo cp -i /etc/kubernetes/admin.conf /root/.kube/config
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

这里要注意所有master节点都要更新完在测试,不然会报以下类似错误

shell811127@k8s70133:~$ kubectl get node
Error from server (InternalError): an error on the server ("") has prevented the request from succeeding

27、测试自己打包的镜像

kubectl run  "name" --image="自己打包的镜像名" --port=XXX --env=XXX -n XXX等同docker run XXX

28、重启pod(使用deployment部署的)

kubectl rollout restart deployment deploy_name -n ns_name

启动成功后可以删除replicaset资源(状态都是0)

29、实时查看日志 

kubectl logs -f  etcd-kmaster1 -n kube-system

kubectl logs --tail 200 -f kube-apiserver -n kube-system  #查看最后200行的日志

kubectl logs -l app=frontend # 返回所有标记为 app=frontend 的 pod 的合并日志。

kubectl logs --since=1h nginx#查看名称为nginx这个pod最近一小时的日志

30、为ubuntu:latest镜像添加时区

如何在ubuntu docker镜像上安装tzdata_StoneLiu999的博客-CSDN博客

31、卸载不掉pv

 kubernetes无法删除pv - haoprogrammer - 博客园

32、检查镜像是否可用,临时启动

kubectl run ubuntu-test --image=core.harbor.shell.com:32042/library/busyboxtools:v1 --command -- sleep 3600

33、ceph osd down处理

ceph集群osd down 故障处理_Rocky000000的博客-CSDN博客

34、docker pull 408错误

docker pull 408错误记录 - 离人怎挽_wdj - 博客园

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐