這篇文章主要介紹了kubernetes使用技巧有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一:在容器中獲取 Pod 的IP
apiVersion: v1
kind: ReplicationController
metadata:
name: world-v2
spec:
replicas: 3
selector:
app: world-v2
template:
metadata:
labels:
app: world-v2
spec:
containers:
- name: service
image: test
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
ports:
- name: service
containerPort: 777
容器中可以直接使用 POD_IP 環境變量獲取容器的 IP,通過環境變量來實現,該環境變量直接引用 resource 的狀態字段。
二:在Pod中獲取宿主機的主機名、namespace等
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: MY_POD_SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
restartPolicy: Never
這條技巧補充了第一條獲取 podIP 的內容,方法都是一樣的,只不過列出了更多的引用字段。參考下面的 pod 定義,每個 pod 里都有一個 {.spec.nodeName} 字段,通過 fieldRef 和環境變量,就可以在Pod中獲取宿主機的主機名(訪問環境變量MY_NODE_NAME)。
三:指定容器的啟動參數
我們可以在 Pod 中為容器使用 command 為容器指定啟動參數:
command: ["/bin/bash","-c","bootstrap.sh"]
使用數組的方式定義,所有命令使用跟 Dockerfile 中的 CMD 配置是一樣的,但是有一點不同的是,bootsttap.sh 必須具有可執行權限,否則容器啟動時會出錯。
四:使容器內時間與宿主機同步
我們下載的很多容器內的時區都是格林尼治時間,與北京時間差8小時,這將導致容器內的日志和文件創建時間與實際時區不符,有兩種方式解決這個問題:
1.修改鏡像中的時區配置文件
2.將宿主機的時區配置文件/etc/localtime使用volume方式掛載到容器中
第二種方式比較簡單,不需要重做鏡像,只要在應用的yaml文件中增加如下配置:
volumeMounts:
- name: host-time
mountPath: /etc/localtime
readOnly: true
volumes:
- name: host-time
hostPath:
path: /etc/localtime
五:kubectl 命令補全
# yum install -y bash-completion
# source /usr/share/bash-completion/bash_completion
# source <(kubectl completion bash)
六:創建一個CentOS測試容器
有時我們可能需要在Kubernetes集群中創建一個容器來測試集群的狀態或對其它容器進行操作,這時候我們需要一個操作節點,可以使用一個普通的CentOS容器來實現。即使用一個while循環保證容器啟動時擁有一個前臺進程。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
template:
metadata:
labels:
app: test
spec:
containers:
- image: harbor-001.jimmysong.io/library/centos:7.2.1511
name: test
command: ["/bin/bash","-c","while true; do sleep 1000; done"]
imagePullPolicy: IfNotPresent
感謝你能夠認真閱讀完這篇文章,希望小編分享的“kubernetes使用技巧有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。