千家信息网

kubernetes使用技巧有哪些

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍了kubernetes使用技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:在容器中获取 Pod 的IPap
千家信息网最后更新 2025年12月03日kubernetes使用技巧有哪些

这篇文章主要介绍了kubernetes使用技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一:在容器中获取 Pod 的IP

  1. apiVersion: v1

  2. kind: ReplicationController

  3. metadata:

  4. name: world-v2

  5. spec:

  6. replicas: 3

  7. selector:

  8. app: world-v2

  9. template:

  10. metadata:

  11. labels:

  12. app: world-v2

  13. spec:

  14. containers:

  15. - name: service

  16. image: test

  17. env:

  18. - name: POD_IP

  19. valueFrom:

  20. fieldRef:

  21. fieldPath: status.podIP

  22. ports:

  23. - name: service

  24. containerPort: 777

容器中可以直接使用 POD_IP 环境变量获取容器的 IP,通过环境变量来实现,该环境变量直接引用 resource 的状态字段。

二:在Pod中获取宿主机的主机名、namespace等

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4. name: dapi-test-pod

  5. spec:

  6. containers:

  7. - name: test-container

  8. image: busybox

  9. command: [ "/bin/sh", "-c", "env" ]

  10. env:

  11. - name: MY_NODE_NAME

  12. valueFrom:

  13. fieldRef:

  14. fieldPath: spec.nodeName

  15. - name: MY_POD_NAME

  16. valueFrom:

  17. fieldRef:

  18. fieldPath: metadata.name

  19. - name: MY_POD_NAMESPACE

  20. valueFrom:

  21. fieldRef:

  22. fieldPath: metadata.namespace

  23. - name: MY_POD_IP

  24. valueFrom:

  25. fieldRef:

  26. fieldPath: status.podIP

  27. - name: HOST_IP

  28. valueFrom:

  29. fieldRef:

  30. fieldPath: status.hostIP

  31. - name: MY_POD_SERVICE_ACCOUNT

  32. valueFrom:

  33. fieldRef:

  34. fieldPath: spec.serviceAccountName

  35. restartPolicy: Never

这条技巧补充了第一条获取 podIP 的内容,方法都是一样的,只不过列出了更多的引用字段。参考下面的 pod 定义,每个 pod 里都有一个 {.spec.nodeName} 字段,通过 fieldRef 和环境变量,就可以在Pod中获取宿主机的主机名(访问环境变量MY_NODE_NAME)。

三:指定容器的启动参数

我们可以在 Pod 中为容器使用 command 为容器指定启动参数:

  1. command: ["/bin/bash","-c","bootstrap.sh"]

使用数组的方式定义,所有命令使用跟 Dockerfile 中的 CMD 配置是一样的,但是有一点不同的是,bootsttap.sh 必须具有可执行权限,否则容器启动时会出错。

四:使容器内时间与宿主机同步

我们下载的很多容器内的时区都是格林尼治时间,与北京时间差8小时,这将导致容器内的日志和文件创建时间与实际时区不符,有两种方式解决这个问题:
1.修改镜像中的时区配置文件
2.将宿主机的时区配置文件/etc/localtime使用volume方式挂载到容器中
第二种方式比较简单,不需要重做镜像,只要在应用的yaml文件中增加如下配置:

  1. volumeMounts:

  2. - name: host-time

  3. mountPath: /etc/localtime

  4. readOnly: true

  5. volumes:

  6. - name: host-time

  7. hostPath:

  8. path: /etc/localtime

五:kubectl 命令补全

  1. # yum install -y bash-completion


  2. # source /usr/share/bash-completion/bash_completion


  3. # source <(kubectl completion bash)

六:创建一个CentOS测试容器

有时我们可能需要在Kubernetes集群中创建一个容器来测试集群的状态或对其它容器进行操作,这时候我们需要一个操作节点,可以使用一个普通的CentOS容器来实现。即使用一个while循环保证容器启动时拥有一个前台进程。

  1. apiVersion: extensions/v1beta1

  2. kind: Deployment

  3. metadata:

  4. name: test

  5. labels:

  6. app: test

  7. spec:

  8. replicas: 1

  9. template:

  10. metadata:

  11. labels:

  12. app: test

  13. spec:

  14. containers:

  15. - image: harbor-001.jimmysong.io/library/centos:7.2.1511

  16. name: test

  17. command: ["/bin/bash","-c","while true; do sleep 1000; done"]

  18. imagePullPolicy: IfNotPresent

感谢你能够认真阅读完这篇文章,希望小编分享的"kubernetes使用技巧有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0