Pod
init C
[root@k8s-master01 Pod]
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]
apiVersion: v1
kind: Service
metadata:
name: mydb
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9377
[root@k8s-master01 Pod]
apiVersion: v1
kind: Service
metadata:
name: myservice
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9376
readiness
[root@k8s-master01 Pod]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
/usr/local/install-k8s/templates/Store/configmap
[root@k8s-master01 configmap]
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]
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
[root@k8s-master01 configmap]
configmap/game-config created
[root@k8s-master01 configmap]
NAME DATA AGE
game-config 2 17s
[root@k8s-master01 configmap]
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]
configmap/game-config-2 created
[root@k8s-master01 file]
NAME DATA AGE
game-config 2 7m21s
game-config-2 1 14s
[root@k8s-master01 file]
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]
configmap/special-config created
[root@k8s-master01 configmap]
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