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
k8s