专业的编程技术博客社区

网站首页 > 博客文章 正文

kubernetes基础知识之项目部署(k8s项目部署)

baijin 2024-09-11 00:45:13 博客文章 6 ℃ 0 评论

kubernetes部署docker项目:

docker build . -t myblog:v1 -f Dockerfile

创建docker 容器:

docker run --name mysql -p 3306:3306 --restart always -e MYSQL_DATABASE=mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

查看mysql容器:

docker exec -it $pod_name /bin/bash

mysql -uroot -p123456

show databases;

use mysql;

show tables;

~~~我是华丽的分隔线~~~

部署Django应用:

Django应用依赖python,在settings.py里面配置数据库的属性,包括数据库名、账号、密码、主机host、端口等属性。

docker run --name myblog -p 8002:8002 -e MySQL_HOST=192.168.116.168 -e MYSQL_USER=root -e MYSQL_PASSWORD=123456 myblog:v1

~~~我是华丽的分隔线~~~

k8s容器命名规则:

k8s_{container_name}_{pod_fullName}_{namespace}_{pod_UID}_{podrestartCount}

Pod_FullName=deployment+replicasetName+ComputeHash,其中第一个字段是deploymentName,前两个字段合称replicasetName,第三个字段是ComputeCount,三个字段中间是用横杠隔开的。

~~~我是华丽的分隔线~~~

确认pod是否是内存溢出oom导致pod被killed后重启:

egrep -r "killed as" /var/log/messages

dmesg -T | grep killed 找到pod_id

docker ps | grep $pod_id 找到pod_name

查看到被kill的容器Container_ID,然后docker ps | grep $Container_ID 查看到对应的kubernetes pod名称。

kubectl get pod $pod_name -n $namespace -o yaml | grep -C 6 "request"

需要查看这个pod的内存limit值。

kubectl top pod $pod_name -n $namespace

需要查看这个pod的memory内存top值,单位是Byte。

如果pod的memory limit值和top pod的memory值极其接近,说明是内存溢出导致pod oom。

~~~我是华丽的分隔线~~~

kubernetes的pod重启时间和次数,一般看kubectl get pod -n $namespace结果中的AGE和RESTART字段。

一般pod的oomkilled属于内存溢出或者程序的内存使用峰值超过cgroup限制的值导致。

一般pod的liveness probe failed探针检测失败是由于pod的内部进程或者端口异常导致。

一般kubernetes中pod里面有liveness probe探活检测的脚本。

~~~我是华丽的分隔线~~~

kubernetes进入pod:

kubectl exec -it -n$namespace $pod_name -- /bin/bash

~~~我是华丽的分隔线~~~

kubernetes维护节点:

kubectl cordon $node_name

kubernetes驱逐pod:

kubectl drain $node_name --ignore-daemonsets --delete-local-data

--ignore-daemonsets是忽略daemonsets类型的pod。

--delete-local-data在驱逐节点之前删除节点上的pod本地数据。本地数据包括pod的日志、镜像和其他本地数据。如果不添加这个选项,那么本地数据将保留在这个节点上,并且需要手动清理。

~~~我是华丽的分隔线~~~

kubernetes隔离异常状态的pod:

kunectl get svc -n $namespace

查看pod的标签:

kubectl get pod -n $namespace -o wide -l --show-labels

kubectl get pod -n $namespace -o wide -l app=$label_name

kubectl get endpoints -n $namespace $deployment_name

隔离异常状态的pod命令:

kubectl -n $namespace label pod $pod_name app=$deployment_name_isolation -overwrite

验证,再次查看pod的标签:

kubectl get pod -n $namespace -o wide -l --show-labels

~~~我是华丽的分隔线~~~

鼓励的话语:想要受到拥护,就要争取人心!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表