1,创建带钩子函数的pod的配置文件并运行
cat >pod-test.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
name: pod-hook-exec
namespace: dev
spec:
containers:
- name: main-container
image: nginx:1.17.1
ports:
- name: nginx-port
containerPort: 80
lifecycle:
postStart:
httpGet:
path: / #URI地址
port: 81 #端口号
host: 10.105.130.25 #主机地址
scheme: HTTP #支持的协议,http或者https
EOF
kubectl apply -f pod-test.yaml
kubectl get pod -n dev -w
''' 因为无法访问10.105.130.25:81,重新创建容器
NAME READY STATUS RESTARTS AGE
pod-hook-exec 0/1 ContainerCreating 0 12s
pod-hook-exec 0/1 PostStartHookError: Get http://10.105.130.25:81//: dial tcp 10.105.130.25:81: connect: connection refused 0 22s
ng1-d64f7b884-6kcll 0/1 Pending 0 0s
ng1-d64f7b884-6kcll 0/1 Pending 0 0s
'''
2,在另一个shell,创建测试用pod/svc的配置文件并运行
cat >svc-test.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: ng1
namespace: dev
spec:
replicas: 1
selector:
matchLabels:
run: ng1
template:
metadata:
labels:
run: ng1
spec:
containers:
- image: nginx:1.17.1
name: nginx
ports:
- containerPort: 80
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: dev
spec:
clusterIP: 10.105.130.25 #需要和钩子pod的host对应
ports:
- port: 81 #需要和钩子pod的port对应
targetPort: 80
selector:
run: ng1 #根据此标签选择器,选择pod进行expose
EOF
kubectl apply -f svc-test.yaml
''' 成功访问10.105.130.25:81,成功创建容器
NAME READY STATUS RESTARTS AGE
pod-hook-exec 0/1 ContainerCreating 0 12s
pod-hook-exec 0/1 PostStartHookError: Get http://10.105.130.25:81//: dial tcp 10.105.130.25:81: connect: connection refused 0 22s
ng1-d64f7b884-6kcll 0/1 Pending 0 0s
ng1-d64f7b884-6kcll 0/1 Pending 0 0s
ng1-d64f7b884-6kcll 0/1 ContainerCreating 0 0s
pod-hook-exec 0/1 PostStartHookError: Get http://10.105.130.25:81//: dial tcp 10.105.130.25:81: connect: connection refused 1 38s
ng1-d64f7b884-6kcll 1/1 Running 0 2s
pod-hook-exec 0/1 CrashLoopBackOff 1 39s
pod-hook-exec 1/1 Running
'''