一、配置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端口开通35000-36500
要在 Kubernetes 集群上使用 35000-36500 范围的端口,您需要配置 kube-apiserver、kube-controller-manager 和 kube-proxy 等组件。以下是详细的步骤:
- 修改 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"
- 修改 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"
- 修改 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"
- 重启服务:
修改配置后,您需要重启这些组件以使更改生效。例如,如果您使用的是 kubeadm 部署的集群,可以通过以下命令重启这些组件:
systemctl restart kube-apiserver
systemctl restart kube-controller-manager
systemctl restart kube-proxy
- 验证配置:
您可以通过创建测试服务来验证配置是否生效。创建一个 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信息,如图: