一、配置host域名

1.配置host
kubectl get configmap -n kube-system
# 查询是否有coredns的对象
kubectl edit configmap  -n kube-system xxxCoredns的那个对象名xx

在这里插入图片描述
根据ip和域名的管理, 在hosts中配置好后保存退出

2.重启生效
1.查询出coredns的pod
kubectl get pod -n kube-system

在这里插入图片描述

2.删除coredns的pod,自动重建即可
kubectl delete pod -n kube-system xxxxxCoreDNS的POD名字

二、检查节点情况及重启

1.检查node节点情况

kubectl get node

发现有节点NotReady在这里插入图片描述
2.登录异常的 122 用root账号 执行
systemctl restart kubelet

3.然后执行 kubectl get node
差不多等5分钟即可
如果返回的节点都是ready,说明已经恢复正常

三、进入mysql容器内执行sql

1.执行如下命令,找到mysql所在的pod
kubectl get pod -n campaign-rs-qa|grep mysql

不确定命名空间的情况,可以通过

kubectl get pod -A|grep mysql
2.执行如下命令,找到mysql所在的pod

进入容器内部

kubectl exec -it mysql-8-0-21-master-0 /bin/bash -n campaign-rs-qa
3.进入mysql的bin目录下

如果已配置环境变量则不需要此步骤,这里假设在/var/lib/mysql/bin

cd /var/lib/mysql/bin
4.登陆mysql客户段

mysql -h IP地址 -u用户名 -p密码 -P 3306,例如

mysql -h 127.0.0.1 -uroot -p123456 -P 3306
5.进入mysql

show databases; 查看数据库
use 数据库;切换到指定的数据库
show tables;查看表
在这里插入图片描述

6.ingress-nginx的配置

官方使用文档:
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/

四、动态启停的脚本

动态启动脚本举例:

kubectl -n fas scale deployment fas-web --replicas=3

动态停止脚本举例:

kubectl -n fas scale deployment fas-web --replicas=0

五、kafka发送和接收消息的命令

进入容器 第一步
kubectl exec -it kafka-client -n mid-dev bash (第一步)
进入消息发送
bin/kafka-console-producer.sh --broker-list kafka:9092 --topic test-event
这个是从头消费的命令,你执行下看看
bin/kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic test-events --from-beginning
再插入数据
bin/kafka-console-producer.sh --broker-list 10.175.87.30:8296 --topic test-event1 (第二步)

六、kafka发送和接收消息的命令

强制删除k8s中pod的命令

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

在上面的命令中,您需要将<pod_name>替换为要删除的Pod的名称。–grace-period=0参数指定了删除Pod的等待时间为0秒,–force参数表示强制删除。
请注意,强制删除Pod可能会导致数据丢失或其他意外情况,因此请谨慎使用。通常情况下,建议首先尝试正常删除Pod,只有在必要时才使用强制删除。

七、k8s优秀文章分享

图解k8s
优秀的视频:b站老狼
对应的笔记:课程笔记

八、生产环境k8s端口开通35000-36500

要在 Kubernetes 集群上使用 35000-36500 范围的端口,您需要配置 kube-apiserver、kube-controller-manager 和 kube-proxy 等组件。以下是详细的步骤:

  1. 修改 Kube-apiserver 配置:

确保 kube-apiserver 启动时包含 --service-node-port-range 参数,并设置为 35000-36500。例如:

kube-apiserver --service-node-port-range=35000-36500

如果使用的是基于文件的配置(例如 kubeadm),可以在配置文件中添加此参数。例如,在 kubeadm 的配置文件 kubeadm-config.yaml 中:

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
apiServer:
extraArgs:
service-node-port-range: "35000-36500"
  1. 修改 Kube-controller-manager 配置:

确保 kube-controller-manager 启动时包含 --service-node-port-range 参数,并设置为 35000-36500。例如:

kube-controller-manager --service-node-port-range=35000-36500

同样,如果使用 kubeadm,可以在配置文件中添加:

controllerManager:
extraArgs:
service-node-port-range: "35000-36500"
  1. 修改 Kube-proxy 配置:

对于 kube-proxy,您可能需要修改 ConfigMap。假设您在 kube-system 命名空间下运行 kube-proxy,可以编辑 ConfigMap:

kubectl edit cm kube-proxy -n kube-system

找到 config.conf 项,并添加或修改 nodePortAddress

apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
SupportNodePprof: true
mode: "iptables"
nodePortAddresses:
- "35000-36500"
  1. 重启服务:

修改配置后,您需要重启这些组件以使更改生效。例如,如果您使用的是 kubeadm 部署的集群,可以通过以下命令重启这些组件:

systemctl restart kube-apiserver
systemctl restart kube-controller-manager
systemctl restart kube-proxy
  1. 验证配置:

您可以通过创建测试服务来验证配置是否生效。创建一个 NodePort 类型的服务,并指定端口范围:

apiVersion: v1
kind: Service
metadata:
name: test-nodeport
spec:
type: NodePort
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 35001

部署该服务并检查它是否成功分配到指定的端口范围内的端口。

通过以上步骤,您应该能够在 Kubernetes 集群上使用 35000-36500 范围的端口。

九、k8s中为pod生成svc的命令

在 Kubernetes (k8s) 中,要为一个已经存在的 Pod 创建一个 Service(通常简称为 svc),你可以使用 kubectl expose 命令。这个命令可以快速地从现有的 Pod、Deployment、ReplicaSet 等创建一个新的 Service 对象,使得这些资源可以被集群内的其他组件或外部访问。
基本的命令格式如下:

kubectl expose TYPE NAME --port=port --target-port=targetport [--protocol=TCP|UDP] [--name=svcname] [--type=LoadBalancer|NodePort|ClusterIP]

这里:

  • TYPE 是你要暴露的资源类型,例如 pod, deployment, replicaset 等。
  • NAME 是资源的名称。
  • –port 是 Service 对外暴露的端口。
  • –target-port 是 Pod 内部的端口,即流量将被转发到这个端口。
  • –protocol 是可选的,默认是 TCP,也可以是 UDP。
  • –name 是创建的 Service 的名称,如果不指定,则使用 Pod 或其他资源的名称。
  • –type 指定 Service 的类型,可以是 ClusterIP(默认)、NodePort 或 LoadBalancer。
    示例
    假设你有一个名为 myapp-pod 的 Pod,运行在端口 80 上,你想创建一个类型为 NodePort 的 Service 来暴露它:
kubectl expose pod myapp-pod --port=80 --target-port=80 --name=myapp-service --type=NodePort

十、k8s中的网络、跨命名空间访问

https://mp.weixin.qq.com/s/wlAjB4T1fmitoKkcl1xEfw

十一、k8s中创建Role和RoleBinding,授权给prometues

apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus-dmzs
  namespace: autowork
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus-dmzs
  namespace: autowork
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  - services
  - endpoints
  - pods
  - nodes/proxy
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - "extensions"
  resources:
    - ingresses
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - configmaps
  - nodes/metrics
  verbs:
  - get
- nonResourceURLs:
  - /metrics
  verbs:
  - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus-dmzs
  namespace: autowork
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus-dmzs
subjects:
- kind: ServiceAccount
  name: prometheus-test
  namespace: autowork

1.namespace要替换成自己的,执行成功后,可以通过

kubectl get secrets -n autowork 

查询到对应的secrets,如图:
在这里插入图片描述
通过

kubectl describe secrets prometheus-dmzs-token-9b9fp -n autowork

查询到对应的token信息,如图:
在这里插入图片描述

Logo

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

更多推荐