k8s记录
拉取镜像部署服务拉镜像:docker pull alpha-harbor.51iwifi.com/video-cloud/dataservice-node-provider:1.0.2.55编排文件:启动容器:helm install -n front-gateway ./front-gateway其中-n为指定namespace,可以选择没有,./front-gateway指的是该服务的编排文件
拉取镜像部署服务
拉镜像:
docker pull alpha-harbor.51iwifi.com/video-cloud/dataservice-node-provider:1.0.2.55
编排文件:
启动容器:
helm install --namespace beta -n front-gateway ./front-gateway
其中-n为指定helm中的名字,可以用helm list查询,如果需要部署到特定namespace只需加上 --namespace,可以选择没有,./front-gateway指的是该服务的编排文件
k8s教程
升级镜像服务
helm --namespace np(命名空间) upgrade wechat-auth-service(release名称) ./(chart路径) --description "change port "
获取镜像、服务名
kubectl describe pod |grep Image: | grep cloud-switch |awk '{print$2}'
kubectl describe pod |grep Image: | grep cloud-switch |awk '{print$2}'| awk -F '/' '{print $3}'|awk -F ':' '{print $1}'
回滚服务
先用helm hist 查看历史版本:helm hist 镜像名(用helm list可以找到)
[superdog] # helm hist smarthome-admin
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Thu Apr 22 14:37:47 2021 SUPERSEDED smarthome-admin-1.0.56 1.0.0.23 Install complete
2 Thu Apr 22 14:43:44 2021 SUPERSEDED smarthome-admin-1.0.56 1.0.0.23 Upgrade complete
3 Tue May 11 16:48:55 2021 DEPLOYED smarthome-admin-1.0.57 1.0.0.23 Upgrade complete
以上可以看到该镜像部署记录,版本回滚到第二个版本
[superdog] # helm rollback --debug smarthome-admin 2
[debug] Created tunnel using local port: '35999'
[debug] SERVER: "127.0.0.1:35999"
Rollback was a success.
删除pod后自动又新起一个
这里原因在于还有个deployment的没有删除
#如有需要加上 -n命名空间
kubectl delete pod <podname>
kubectl get deployment <name>
kubectl delete deployment <name>
kubectl get service <name>
kubectl delete service <name>
删除一直处于terminating的pod
kubectl delete pods --grace-period=0 --force
创建PVC
这里创建PVC后会自动申领一个PV,底层的storageClass provisioner承担了申领工作
创建一个固定的文件目录作为存储pvc配置文件,新建yaml文件,内容如下:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: analysis-push
namespace: beta
annotations:
volume.beta.kubernetes.io/storage-class: "default"
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
这里修改的就是name,namespace,创建完后启动PVC:kubectl apply -f analysis-push.yaml
至此启动完毕后,在编排文件中调用该PVC,一般是在deployment.yaml文件中
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "fullname" . }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ template "name" . }}
release: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ template "name" . }}
release: {{ .Release.Name }}
spec:
containers:
- name: jar
image: "{{ .Values.image.war.repository }}:{{ .Values.image.war.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: TZ
value: Asia/Shanghai
volumeMounts:
- mountPath: /service/media/storage
name: app-volume
volumes:
- name: app-volume
persistentVolumeClaim:
claimName: smart-home-manage
claimName为刚启动的PVC名称,mountPath为pod内部挂载出的目录
手动创建PV,PVC实现绑定:官方指导
批量删除服务
helm list |grep opf-datas|awk '{printf ""$1" "}' | xargs helm delete --purge
删除evicted状态pod
–all-namespace指所有空间,可以用-n 指定特定空间删除
kubectl get pods -n beta | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n beta
复制容器文件到外面
复制整个目录
kubectl cp -n beta smart-home-776f7d9866-r8tmv:/code/log/ ./
复制单个文件:注意后面的目标目录必须带上文件名
kubectl cp -n beta smart-home-776f7d9866-r8tmv:/code/log/logs.log ./logs.log
修复集群节点状态被驱逐
- 清理磁盘,降低到80%以下
- 解除beta-ceshi-funeng-3状态,kubectl uncordon beta-ceshi-funeng-3
- 重启docker systemctl restart docker
- 重启Evicted pod,4.1 kubectl get pod -A |grep Evicted获取到被驱逐的pod,4.2逐个delete
重启某个节点里的所有服务
kubectl get pods -n beta -o wide| grep funengg-1 | awk ‘{print $1}’ | xargs kubectl delete pod -n beta
某节点失联后将其服务驱逐到其他节点
kubectl taint node k8s-sx02-node4 key=value:NoSchedule
kubectl taint node k8s-sx02-node4 key=value:NoExecute
kubectl get pods --all-namespaces -o wide | grep k8s-sx02-node4 | awk '{print $2}' | xargs kubectl -n beta delete pods --grace-period=0 --force
集群异常定位
定位方法
磁盘清理镜像:docker image prune --all
docker system prune
pod异常退出
在服务启动出错时,pod往往也会自动退出无法进入查看具体的报错信息,此时就需要修改部署文件,来让pod不退出
1.将以下语句,放到deployment.yaml 文件的image下,重新部署,让服务的pods 可以启动
command: [“/bin/sh”]
args: ["-c","while true; do date; sleep 10000; done"]
2.进入容器:ksexe vc-sip-receive-provider-688c5f5c7b-b8r9v bash
3.启动服务:java -Xms512m -Xmx512m -jar -Dspring.profiles.active=test -Dspring.config.location=config/application-test.properties -Dspring.cloud.consul.host=consul -Dspring.cloud.consul.port=8500 vc-sip-receive-provider-1.0.0.41826.198.jar
4.解压jar包:unzip xx.jar
5.重新压缩包:jar cvfM0 springcloud-zuul.jar * // 压缩当前目前所有文件到.jar jar cvfM0 spring-zuul.jar E:/springcloud-zuul/ // 指定压缩目录
给pod添加资源限制
在deployment.yaml文件中添加:注意是在containers 标签下,与image同层级
resources:
limits:
cpu: 1000m
memory: 1000Mi
requests:
cpu: 100m
memory: 600Mi
开启pod多个对外端口映射
在chart文件里的service.yaml添加如下内容:
apiVersion: v1
kind: Service
metadata:
name: {{ template "fullname" . }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.service.type }}
ports:
- port: 80
targetPort: 80
nodePort: 30912
protocol: TCP
name: gateway-service
- port: 81
targetPort: 81
nodePort: 30922
protocol: TCP
name: gateway-port
selector:
app: {{ template "name" . }}
release: {{ .Release.Name }}
获取加入集群命令
在master节点输入
kubeadm token create --print-join-command
将pod部署在指定节点
先为所要部署的节点添加label:注意label不能纯是数字或者true这类关键词
kubectl label node ctunos-moban-7 600Gdisk=node2487
在deployment文件里写入如下,注意是与container同级
nodeSelector:
600Gdisk: node2486
如果要删除label输入kubectl label node ctunos-moban-7 600Gdisk-
更多推荐
所有评论(0)