k8s pod deployment service简单操作
1. 命令创建pod,其实创建了控制器
kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace dev
2. 配置创建pod
apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev spec: containers - image: nginx:latest imagePullPolicy: IfNotPresent name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP
3. 通过deployment创建pod
apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: dev spec: replicas: 3 selector: matchLabels: run: nginx template: metadata: labels: run: nginx spec: containers: - image: nginx:latest name: nginx ports: - containerPort: 80 protocol: TCP
3. 命令创建service
kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev
4. yaml创建service
apiVersion: v1 kind: Service metadata: name: svc-nginx namespace: dev spec: clusterIP: 10109.179.231 ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: ClusterIP
5. 初始化容器
apiVersion: v1 kind: Pod metadata: name: pod-initcontainer namespace: dev spec: containers: - name: main-container image: nginx ports: - name: nginx-port containerPort: 80 initContainers: - name: test-mysql image: busybox command: ['sh', '-c', 'until ping 10.211.55.100 -c 1 ; do echo waiting for myssql...; sleep 2; done;'] - name: test-mysql image: busybox command: ['sh', '-c', 'until ping 10.211.55.101 -c 1 ; do echo waiting for myssql...; sleep 2; done;']
添加ip
ifconfig eth0:1 10.211.55.100 netmask 255.255.0.0 up ifconfig eth0:2 10.211.55.101 netmask 255.255.0.0 up
6. 钩子函数
apiVersion: v1 kind: Pod metadata: name: pod-initcontainer namespace: dev spec: containers: - name: main-container image: nginx ports: - name: nginx-port containerPort: 80 lifecycle: postStart: exec: command: ["/bin/bash", "-c", "echo postStart >> /usr/share/nginx/html/index.html"] preStop: exec: command: ["/usr/sbin/nginx", "-s", "quit"]
7. pod容器探测
存活性探针,就绪性探针
apiVersion: v1 kind: Pod metadata: name: pod-initcontainer namespace: dev spec: containers: - name: main-container image: nginx ports: - name: nginx-port containerPort: 80 livenessProbe: exec: command: - /bin/cat - /tmp/hello.txt
端口检查
livenessProbe: tcpSocket: port: 8080
http get
livenessProbe: httpGet: scheme: HTTP port: 8080 path: /hello
其他配置:
livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 10 # 启动后多少秒进行第一次探测 timeoutSeconds: 10 # 探测超时时间,默认1s periodSeconds: 10 # 探测频率,默认10s failureThreshold: 10 # 连续探测失败多少次才认定失败,默认3 successThreshold: 10 # 连续探测成功多少次才被认定成功,默认1