k8s核心资源:精简版yaml示例


Pod

kubectl run mynginx --image=registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1  --image-pull-policy=IfNotPresent  --port=80

kubectl get po mynginx -oyaml

apiVersion: v1
kind: Pod
metadata:
  annotations:
    cni.projectcalico.org/podIP: 172.17.125.54/32
    cni.projectcalico.org/podIPs: 172.17.125.54/32
  creationTimestamp: "2021-11-26T09:10:44Z"
  labels:
    run: mynginx
  name: mynginx
  namespace: default
  resourceVersion: "897494"
  uid: d7271a91-fb48-442f-8ac6-9ce97dccf99e
spec:
  containers:
  - image: registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1
    imagePullPolicy: IfNotPresent
    name: mynginx
    ports:
    - containerPort: 80
      protocol: TCP
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-jxn9z
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: k8s-node01
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: kube-api-access-jxn9z
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2021-11-26T09:10:44Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2021-11-26T09:10:46Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2021-11-26T09:10:46Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2021-11-26T09:10:44Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: docker://8c772df0bad7afff0610c12051a46da2ee6b91a270763105c3d451a1bb8db9b9
    image: registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1
    imageID: docker-pullable://registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx@sha256:2963fc49cc50883ba9af25f977a9997ff9af06b45c12d968b7985dc1e9254e4b
    lastState: {}
    name: mynginx
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2021-11-26T09:10:45Z"
  hostIP: 192.168.117.162
  phase: Running
  podIP: 172.17.125.54
  podIPs:
  - ip: 172.17.125.54
  qosClass: BestEffort
  startTime: "2021-11-26T09:10:44Z"

nginx-pod.yaml(含对应svc)

apiVersion: v1  # api版本
kind: Pod  # 创建的资源类型
metadata:  # 元数据
  name: nginx  # pod的名称
  namespace: default  # pod所在名称空间
  labels:  # 下面的标签可以多个
    app: mynginx  # pod的标签
spec:  # pod规格
  containers:  # 下面的容器可以多个
  - name: nginx  # pod中容器的名称,用于区分一个pod多个不同容器
    ports:
    - containerPort: 80  # 容器暴露的端口
    image: registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1  # 容器使用的镜像
    imagePullPolicy: IfNotPresent  # 镜像拉取策略
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-pod-svc
spec:
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: mynginx
  type: NodePort

创建pod:kubectl apply -f nginx-pod.yaml

查看pod:kubectl get po -l app=mynginx

(READY,右侧数字表示pod里面有多少个容器,左侧数字表示正常运行的容器)

kubectl get po -l app=mynginx -owide

(RESTARTS,pod里封装的容器的重启次数)

curl 172.17.125.34

kubectl get svc |grep nginx-pod-svc

curl 10.107.208.14:80,80是上面svc的端口

运行busybox:

cat<


kubectl get po

域名解析:nslookup nginx-pod-svc

Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      nginx-pod-svc
Address 1: 10.107.208.14 nginx-pod-svc.default.svc.cluster.local

kubectl exec -it busybox -- sh

查看日志:kubectl logs -f nginx

http://192.168.117.161:31192/

Deployment

nginx-deploy.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1
        imagePullPolicy: IfNotPresent
        name: nginx
        ports:
        - name: http
          containerPort: 80

kubectl apply -f nginx-deploy.yaml

kubectl get deploy |grep nginx

或者:kubectl get deploy -l app=nginx-deploy

查看Replicaset:kubectl get rs |grep nginx

kubectl get po -l app=nginx

Deployment(一个pod多个容器)

nginx-tomcat-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-tomcat-deploy
  name: nginx-tomcat
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-tomcat
  template:
    metadata:
      labels:
        app: nginx-tomcat
    spec:
      containers:
      - image: registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1
        imagePullPolicy: IfNotPresent
        name: nginx
        ports:
        - name: http-nginx
          containerPort: 80
      - image: registry.cn-chengdu.aliyuncs.com/qzcsbj/tomcat:9.0.13
        imagePullPolicy: IfNotPresent
        name: tomcat
        ports:
        - name: http-tomcat
          containerPort: 8080

Service

nginx-deploy-svc.yaml,匹配上面的Deployment

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-deploy-svc
  name: nginx-deploy-svc
spec:
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: nginx
  type: NodePort

kubectl apply -f nginx-deploy-svc.yaml

kubectl get svc -l app=nginx-deploy-svc

curl 10.107.207.129

相关