kubernetes&&簡單模板

Pod

init C

[root@k8s-master01 Pod]# cat init.yaml 
apiVersion: v1
kind: Pod
metadata:
    name: myapp-pod
    namespace: default
    labels:
        app: myapp
spec:
    containers:
    - name: myapp-container
      image: busybox
      command: ['sh','-c','echo The app is running! && sleep 3600']
    initContainers:
    - name: init-myservice
      image: busybox
      command: ['sh','-c','until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
    - name: init-mydb
      image: busybox
      command: ['sh','-c','until nslookup mydb; do echo waiting for mydb; sleep 2; done;']

[root@k8s-master01 Pod]# cat mydb.yaml 
apiVersion: v1
kind: Service
metadata:
    name: mydb
spec:
    ports:
        - protocol: TCP
          port: 80
          targetPort: 9377
[root@k8s-master01 Pod]# cat myservice.yaml 
apiVersion: v1
kind: Service
metadata:
    name: myservice
spec:
    ports:
        - protocol: TCP
          port: 80
          targetPort: 9376

readiness

[root@k8s-master01 Pod]# cat readiness.yaml 
apiVersion: v1
kind: Pod
metadata:
    name: readiness-httpget-pod
    namespace: default
spec:
    containers:
    - name: readiness-httpget-container
      image: wangyanglinux/myapp:v1
      imagePullPolicy: IfNotPresent
      readinessProbe:
          httpGet:
              port: 80
              path: /index1.html
          initialDelaySeconds: 1
          periodSeconds: 3

liveness

exec

[root@k8s-master01 Pod]# cat liveness-exec.yaml 
apiVersion: v1
kind: Pod
metadata:
    name: liveness-exec-pod
    namespace: default
spec:
    containers:
    - name: liveness-exec-container
      image: wangyanglinux/myapp:v1
      imagePullPolicy: IfNotPresent
      command: ["/bin/sh","-c","touch /tmp/live; sleep 60; rm -rf /tmp/live; sleep 3600" ]
      livenessProbe:
          exec:
              command: ["test","-e","/tmp/live"]
          initialDelaySeconds: 1
          periodSeconds: 3

httpget

[root@k8s-master01 Pod]# cat liveness-httpget.yaml 
apiVersion: v1
kind: Pod
metadata:
    name: liveness-httpget-pod
    namespace: default
spec:
    containers:
    - name: liveness-httpget-container
      image: wangyanglinux/myapp:v1
      imagePullPolicy: IfNotPresent
      ports:
      - name: http
        containerPort: 80
      livenessProbe:
          httpGet:
              port: 80
              path: /index.html
          initialDelaySeconds: 1
          periodSeconds: 3
          timeoutSeconds: 10

tcp

[root@k8s-master01 Pod]# cat liveness-tcp.yaml 
apiVersion: v1
kind: Pod
metadata: 
    name: liveness-tcp-pod
    namespace: default
spec:
    containers:
    - name: liveness-tcp-container
      image: wangyanglinux/myapp:v1
      imagePullPolicy: IfNotPresent
      livenessProbe:
          initialDelaySeconds: 5
          timeoutSeconds: 1
          tcpSocket:
              port: 80
          periodSeconds: 3

main C

[root@k8s-master01 Pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
    name: myapp-pod
    namespace: default
    labels:
        app: myapp
spec:
    containers:
    - name: app
      image: hub.atguigu.com/library/myapp:v1

start/stop

[root@k8s-master01 Pod]# cat start-stop.yaml 
apiVersion: v1
kind: Pod
metadata:
    name: lifecycle-demo
spec:
    containers:
    - name: lifecycle-demo-container
      image: wangyanglinux/myapp:v1
      imagePullPolicy: IfNotPresent
      lifecycle:
          postStart:
              exec:
                  command: ["/bin/sh","-c","echo Hello from the postStart handler >> /usr/share/message" ]
          preStop:
              exec:
                  command: ["/bin/sh","-c","echo Hello from the preStop handler >> /etc/share/message"]

Controller

ReplicaSet

[root@k8s-master01 Controller]# cat rs.yaml 
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
    name: frontend
spec:
    replicas: 3
    selector:
        matchLabels:
            tier: frontend
    template:
        metadata:
            labels:
                tier: frontend
        spec:
            containers:
            - name: myapp
              image: wangyanglinux/myapp:v1
              env:
              - name: GET_HOSTS_FROM
                value: dns
              ports:
              - containerPort: 80

Deployment

[root@k8s-master01 Controller]# cat deployment.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: deployment-demo1
spec:
    replicas: 3
    template:
        metadata:
            labels:
                app: myapp-demo1
        spec:
            containers:
            - name: myapp-container
              image: wangyanglinux/myapp:v1
              ports:
              - containerPort: 80

DaemonSet

[root@k8s-master01 Controller]# cat daemonset.yaml 
apiVersion: apps/v1
kind: DaemonSet
metadata:
    name: daemonset-example
    labels:
        app: daemonset
spec:
    selector:
        matchLabels:
            name: daemonset-example
    template:
        metadata:
            labels:
                name: daemonset-example
        spec:
            containers:
            - name: daemonset-example
              image: wangyanglinux/myapp:v1

Job

[root@k8s-master01 Controller]# cat Job.yaml 
apiVersion: batch/v1
kind: Job
metadata:
    name: pi
spec:
    template:
        metadata:
            name: pi
        spec:
            containers:
            - name: pi
              image: perl
              command: ["perl","-Mbignum=bpi","-wle","print bpi(2000)"]
            restartPolicy: Never

CronJob

[root@k8s-master01 Controller]# cat CronJob.yaml 
apiVersion: batch/v1beta1
kind: CronJob
metadata:
    name: hello
spec:
    schedule: "*/1 * * * *"
    jobTemplate:
        spec:
            template:
                spec:
                    containers:
                    - name: hello
                      image: busybox
                      args:
                      - /bin/sh
                      - -c
                      - date; echo Hello from the Kubernetes cluster
                    restartPolicy: OnFailure

Service

ClusterIP

[root@k8s-master01 Service]# cat service-v1.yaml 
apiVersion: v1
kind: Service
metadata:
    name: service-v1
    namespace: default
spec:
    type: ClusterIP
    selector:
        app: app-v1
        release: stabel
    ports:
    - name: http
      port: 80
      targetPort: 80

[root@k8s-master01 Service]# cat deployment-v1.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
    name: deployment-v1
    namespace: default
spec:
    replicas: 3
    selector:
        matchLabels:
            app: app-v1
            release: stabel
    template:
        metadata:
            labels:
                app: app-v1
                release: stabel
                env: test
        spec:
            containers:
            - name: app-v1
              image: wangyanglinux/myapp:v1
              imagePullPolicy: IfNotPresent
              ports:
              - name: http
                containerPort: 80

headless

[root@k8s-master01 Service]# cat service-v2-headless.yaml 
apiVersion: v1
kind: Service
metadata:
    name: service-v2-headless
    namespace: default
spec:
    selector:
        app: app-v1
        release: stabel
    clusterIP: "None"
    ports:
    - name: http
      port: 80
      targetPort: 80

NodePort

[root@k8s-master01 Service]# cat service-v3-nodeport.yaml 
apiVersion: v1
kind: Service
metadata:
    name: service-v3-nodeport
    namespace: default
spec:
    type: NodePort
    selector:
        app: app-v1
        release: stabel
    ports:
    - name: http
      port: 80
      targetPort: 80

ingress

NodePort

[root@k8s-master01 ingress]# cat service-nodeport.yaml 
apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

HTTP-單域名

[root@k8s-master01 http]# cat ingress-http.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    replicas: 2
    template:
        metadata:
            labels:
                name: nginx
        spec:
            containers:
              - name: nginx
                image: wangyanglinux/myapp:v1
                imagePullPolicy: IfNotPresent
                ports:
                  - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
    name: nginx-svc
spec:
    ports:
      - port: 80
        targetPort: 80
        protocol: TCP
    selector:
        name: nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress
spec:
    rules:
      - host: foo.bar.com
        http:
            paths:
              - path: /
                backend:
                    serviceName: nginx-svc
                    servicePort: 80
 
    
[root@k8s-master01 http]# cat ingress-http2.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress
spec:
    rules:
      - host: www.atguigu.com
        http:
            paths:
              - path: /
                backend:
                    serviceName: nginx-svc
                    servicePort: 80

HTTP-多域名

[root@k8s-master01 http-ab]# cat ingress-http-a.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: nginx-deployment-a
spec:
    replicas: 3
    template:
        metadata:
            labels:
                name: nginx-a
        spec:
            containers:
              - name: nginx-a
                image: wangyanglinux/myapp:v1
                imagePullPolicy: IfNotPresent
                ports:
                  - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
    name: nginx-svc-a
spec:
    ports:
      - port: 80
        targetPort: 80
        protocol: TCP
    selector:
        name: nginx-a


[root@k8s-master01 http-ab]# cat ingress-http-b.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: nginx-deployment-b
spec:
    replicas: 3
    template:
        metadata:
            labels:
                name: nginx-b
        spec:
            containers:
              - name: nginx-b
                image: wangyanglinux/myapp:v1
                imagePullPolicy: IfNotPresent
                ports:
                  - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
    name: nginx-svc-b
spec:
    ports:
      - port: 80
        targetPort: 80
        protocol: TCP
    selector:
        name: nginx-b


[root@k8s-master01 http-ab]# cat ingress-http2-ab.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress-a
spec:
    rules:
      - host: wwwa.atguigu.com
        http:
            paths:
              - path: /
                backend:
                    serviceName: nginx-svc-a
                    servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress-b
spec:
    rules:
      - host: wwwb.atguigu.com
        http:
            paths:
              - path: /
                backend:
                    serviceName: nginx-svc-b
                    servicePort: 80

HTTPS

[root@k8s-master01 https]# cat ingress-https-a.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress-c
spec:
    tls:
      - hosts:
          - wwwc.atguigu.com
        secretName: tls-secret
    rules:
      - host: wwwc.atguigu.com
        http:
            paths:
            - path: /
              backend:
                  serviceName: nginx-svc-a
                  servicePort: 80

basic-auth

[root@k8s-master01 basic-auth]# cat ingress-basic-auth.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress-d
    annotations:
        nginx.ingress.kubernetes.io/auth-type: basic
        nginx.ingress.kubernetes.io/auth-secret: basic-auth
        nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - wwwd'
spec:
    rules:
    - host: wwwd.atguigu.com
      http:
          paths:
          - path: /
            backend:
                serviceName: nginx-svc-a
                servicePort: 80

rewrite

[root@k8s-master01 rewrite]# cat ingress-rewrite.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress-e
    annotations:
        nginx.ingress.kubernetes.io/rewrite-target: http://wwwd.atguigu.com:31204
spec:
    rules:
    - host: wwwe.atguigu.com
      http:
          paths:
          - path: /
            backend:
                serviceName: nginx-svc-a
                servicePort: 80

存儲

configmap

基於目錄創建configmap

[root@k8s-master01 configmap]# pwd
/usr/local/install-k8s/templates/Store/configmap

[root@k8s-master01 configmap]# cat game.properties 
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30

[root@k8s-master01 configmap]# cat ui.properties 
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice


[root@k8s-master01 configmap]# kubectl create configmap game-config --from-file=/usr/local/install-k8s/templates/Store/configmap
configmap/game-config created


[root@k8s-master01 configmap]# kubectl get configmap -o wide
NAME          DATA   AGE
game-config   2      17s


[root@k8s-master01 configmap]# kubectl get configmap -o yaml
apiVersion: v1
items:
- apiVersion: v1
  data:
    game.properties: |+
      enemies=aliens
      lives=3
      enemies.cheat=true
      enemies.cheat.level=noGoodRotten
      secret.code.passphrase=UUDDLRLRBABAS
      secret.code.allowed=true
      secret.code.lives=30

    ui.properties: |
      color.good=purple
      color.bad=yellow
      allow.textmode=true
      how.nice.to.look=fairlyNice
  kind: ConfigMap
  metadata:
    creationTimestamp: "2020-06-05T16:37:38Z"
    name: game-config
    namespace: default
    resourceVersion: "471440"
    selfLink: /api/v1/namespaces/default/configmaps/game-config
    uid: 9f76a114-9b1b-482a-b04c-bb0fbdd0a2f2
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

基於文件創建configmap

[root@k8s-master01 file]# kubectl create configmap game-config-2 --from-file=/usr/local/install-k8s/templates/Store/configmap/document/game.properties 
configmap/game-config-2 created
[root@k8s-master01 file]# kubectl get configmap
NAME            DATA   AGE
game-config     2      7m21s
game-config-2   1      14s

[root@k8s-master01 file]# kubectl get configmap game-config-2 -o yaml
apiVersion: v1
data:
  game.properties: |+
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30

kind: ConfigMap
metadata:
  creationTimestamp: "2020-06-05T16:44:45Z"
  name: game-config-2
  namespace: default
  resourceVersion: "472064"
  selfLink: /api/v1/namespaces/default/configmaps/game-config-2
  uid: 65b8cf35-03ac-43a0-94bf-aae12d48e7c7

基於字面值創建configmap

[root@k8s-master01 configmap]# kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
configmap/special-config created


[root@k8s-master01 configmap]# kubectl get configmap special-config -o yaml
apiVersion: v1
data:
  special.how: very
  special.type: charm
kind: ConfigMap
metadata:
  creationTimestamp: "2020-06-05T16:52:00Z"
  name: special-config
  namespace: default
  resourceVersion: "472704"
  selfLink: /api/v1/namespaces/default/configmaps/special-config
  uid: 96d10679-682a-41df-a4ef-ebf72c2eeb60
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章