initial upload
This commit is contained in:
commit
47a50a0f7c
11
busybox-svc.yaml
Normal file
11
busybox-svc.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: busybox-service
|
||||
spec:
|
||||
selector:
|
||||
app: busybox
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 9376
|
||||
14
busybox.yaml
Normal file
14
busybox.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: busybox2
|
||||
namespace: default
|
||||
labels:
|
||||
app: busybox
|
||||
spec:
|
||||
containers:
|
||||
- name: busy
|
||||
image: busybox
|
||||
command:
|
||||
- sleep
|
||||
- "3600"
|
||||
11
counter.sh
Executable file
11
counter.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
COUNTER=$1
|
||||
COUNTER=$(( COUNTER * 60 ))
|
||||
|
||||
while true
|
||||
do
|
||||
echo $COUNTER seconds remaining
|
||||
sleep 1
|
||||
COUNTER=$(( COUNTER - 1 ))
|
||||
done
|
||||
8
crd-backup.yaml
Normal file
8
crd-backup.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
apiVersion: "stable.linux.com/v1"
|
||||
kind: BackUp
|
||||
metadata:
|
||||
name: mybackup
|
||||
spec:
|
||||
timeSpec: "* * * * */5"
|
||||
image: linux-backup-image
|
||||
replicas: 5
|
||||
31
crd-crontab-beta1.yaml
Normal file
31
crd-crontab-beta1.yaml
Normal file
@ -0,0 +1,31 @@
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: crontabs.stable.example.com
|
||||
spec:
|
||||
group: stable.example.com
|
||||
versions:
|
||||
- name: v1
|
||||
served: true
|
||||
storage: true
|
||||
scope: Namespaced
|
||||
names:
|
||||
plural: crontabs
|
||||
singular: crontab
|
||||
kind: CronTab
|
||||
shortNames:
|
||||
- ct
|
||||
preserveUnknownFields: false
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
properties:
|
||||
spec:
|
||||
type: object
|
||||
properties:
|
||||
cronSpec:
|
||||
type: string
|
||||
image:
|
||||
type: string
|
||||
replicas:
|
||||
type: integer
|
||||
33
crd-crontab.yaml
Normal file
33
crd-crontab.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: crontabs.stable.example.com
|
||||
spec:
|
||||
group: stable.example.com
|
||||
versions:
|
||||
- name: v1
|
||||
served: true
|
||||
storage: true
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
properties:
|
||||
spec:
|
||||
type: object
|
||||
properties:
|
||||
spec:
|
||||
type: object
|
||||
properties:
|
||||
cronSpec:
|
||||
type: string
|
||||
image:
|
||||
type: string
|
||||
replicas:
|
||||
type: integer
|
||||
scope: Namespaced
|
||||
names:
|
||||
plural: crontabs
|
||||
singular: crontab
|
||||
kind: CronTab
|
||||
shortNames:
|
||||
- ct
|
||||
14
crd-object.yaml
Normal file
14
crd-object.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: backups.stable.linux.com
|
||||
spec:
|
||||
group: stable.linux.com
|
||||
version: v1
|
||||
scope: Namespaced
|
||||
names:
|
||||
plural: backups
|
||||
singular: backup
|
||||
shortNames:
|
||||
- bks
|
||||
kind: BackUp
|
||||
42
daemonset-fluentd.yaml
Normal file
42
daemonset-fluentd.yaml
Normal file
@ -0,0 +1,42 @@
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
name: fluentd-elasticsearch
|
||||
namespace: kube-system
|
||||
labels:
|
||||
k8s-app: fluentd-logging
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
name: fluentd-elasticsearch
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: fluentd-elasticsearch
|
||||
spec:
|
||||
tolerations:
|
||||
- key: node-role.kubernetes.io/master
|
||||
effect: NoSchedule
|
||||
containers:
|
||||
- name: fluentd-elasticsearch
|
||||
image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
|
||||
resources:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 200Mi
|
||||
volumeMounts:
|
||||
- name: varlog
|
||||
mountPath: /var/log
|
||||
- name: varlibdockercontainers
|
||||
mountPath: /var/lib/docker/containers
|
||||
readOnly: true
|
||||
terminationGracePeriodSeconds: 30
|
||||
volumes:
|
||||
- name: varlog
|
||||
hostPath:
|
||||
path: /var/log
|
||||
- name: varlibdockercontainers
|
||||
hostPath:
|
||||
path: /var/lib/docker/containers
|
||||
10
dev-role.yaml
Normal file
10
dev-role.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
kind: Role
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
metadata:
|
||||
namespace: development
|
||||
name: developer
|
||||
rules:
|
||||
- apiGroups: ["", "extensions", "apps"]
|
||||
resources: ["deployments", "replicasets", "pods"]
|
||||
verbs: ["list", "get", "watch", "create", "update", "patch", "delete"]
|
||||
|
||||
15
init-container.yaml
Normal file
15
init-container.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: init-demo
|
||||
labels:
|
||||
app: init-demo
|
||||
spec:
|
||||
containers:
|
||||
- name: demo-container
|
||||
image: busybox
|
||||
command: ['sh', '-c', 'sleep 3600']
|
||||
initContainers:
|
||||
- name: init-container
|
||||
image: busybox
|
||||
command: ['sh', '-c', 'sleep 30']
|
||||
13
init1.yaml
Normal file
13
init1.yaml
Normal file
@ -0,0 +1,13 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: initpod
|
||||
spec:
|
||||
containers:
|
||||
- name: after-init
|
||||
image: busybox
|
||||
command: ['sh', '-c', 'echo its running! && sleep 3600']
|
||||
initContainers:
|
||||
- name: init-myservice
|
||||
image: busybox
|
||||
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
|
||||
10
init2.yaml
Normal file
10
init2.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: myservice
|
||||
spec:
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 9376
|
||||
6
join-net.sh
Executable file
6
join-net.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
# run this on worker node only
|
||||
# make sure this matches the mey in the output of the kubeadm init command
|
||||
|
||||
kubeadm join 192.168.4.110:8080 --token d0xzor.dns5rialmgzp5asv \
|
||||
--discovery-token-ca-cert-hash sha256:79e7203a963d1445d19707ea2c6f5c3c6f3c568bd97f825542575dea15a597ba
|
||||
36
kube-setup.sh
Executable file
36
kube-setup.sh
Executable file
@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# verified on Fedora 29 Server
|
||||
|
||||
|
||||
# add vbox repo
|
||||
rm -f /etc/yum.repos.d/vbox.repo
|
||||
|
||||
cat << REPO >> /etc/yum.repos.d/vbox.repo
|
||||
[virtualbox]
|
||||
name=Fedora $releasever - $basearch - VirtualBox
|
||||
baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/\$releasever/\$basearch
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
repo_gpgcheck=0
|
||||
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
|
||||
REPO
|
||||
|
||||
dnf clean all
|
||||
dnf upgrade
|
||||
|
||||
# install vbox
|
||||
echo installing virtualbox
|
||||
dnf install make perl kernel-devel gcc elfutils-libelf-devel -y
|
||||
dnf install VirtualBox-5.2 -y
|
||||
echo installing kubectl
|
||||
dnf install kubernetes-client -y
|
||||
echo downloading minikube, check version
|
||||
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
|
||||
|
||||
chmod +x minikube
|
||||
cp minikube /usr/local/bin
|
||||
|
||||
echo at this point, reboot your Fedora Server. After reboot, manually run:
|
||||
echo vboxconfig
|
||||
echo minikube start
|
||||
9
lab21.sh
Executable file
9
lab21.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
# RHCSA Labs lesson 21 script
|
||||
# SvV
|
||||
# version 0.1
|
||||
|
||||
grep -i enforcing /etc/sysconfig/selinux >/dev/null 2>&1 || echo no enforcing set in /etc/sysconfig/selinux
|
||||
getenforce | grep -i enforcing >/dev/null 2>&1 || echo currently not in enforcing mode
|
||||
history | tail -20 | grep restorecon >/dev/null 2>&1 || echo you have not run the restorecon command recently
|
||||
18
lab7-1.yaml
Normal file
18
lab7-1.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: init-pod
|
||||
labels:
|
||||
app: initapp
|
||||
spec:
|
||||
containers:
|
||||
- name: main-container
|
||||
image: busybox
|
||||
command: ['sh', '-c', 'echo main app running && sleep 3600']
|
||||
initContainers:
|
||||
- name: init-myservie
|
||||
image: busybox
|
||||
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done']
|
||||
- name: init-db
|
||||
image: busybox
|
||||
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done']
|
||||
20
lab7-2.yaml
Normal file
20
lab7-2.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: myservice
|
||||
spec:
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 9376
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mydb
|
||||
spec:
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 9377
|
||||
7
my-crontab.yaml
Normal file
7
my-crontab.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
apiVersion: "stable.example.com/v1"
|
||||
kind: CronTab
|
||||
metadata:
|
||||
name: my-new-cronjob
|
||||
spec:
|
||||
cronSpec: "* * * * */5"
|
||||
image: my-cron-image
|
||||
34
networkpolicy-example.yaml
Normal file
34
networkpolicy-example.yaml
Normal file
@ -0,0 +1,34 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: test-network-policy
|
||||
namespace: default
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
role: db
|
||||
policyTypes:
|
||||
- Ingress
|
||||
- Egress
|
||||
ingress:
|
||||
- from:
|
||||
- ipBlock:
|
||||
cidr: 172.17.0.0/16
|
||||
except:
|
||||
- 172.17.1.0/24
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
project: myproject
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
role: frontend
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 6379
|
||||
egress:
|
||||
- to:
|
||||
- ipBlock:
|
||||
cidr: 10.0.0.0/24
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 5978
|
||||
26
pod-with-node-affinity.yaml
Normal file
26
pod-with-node-affinity.yaml
Normal file
@ -0,0 +1,26 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: with-node-affinity
|
||||
spec:
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: kubernetes.io/e2e-az-name
|
||||
operator: In
|
||||
values:
|
||||
- e2e-az1
|
||||
- e2e-az2
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 1
|
||||
preference:
|
||||
matchExpressions:
|
||||
- key: another-node-label-key
|
||||
operator: In
|
||||
values:
|
||||
- another-node-label-value
|
||||
containers:
|
||||
- name: with-node-affinity
|
||||
image: k8s.gcr.io/pause:2.0
|
||||
29
pod-with-pod-affinity.yaml
Normal file
29
pod-with-pod-affinity.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: with-pod-affinity
|
||||
spec:
|
||||
affinity:
|
||||
podAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchExpressions:
|
||||
- key: security
|
||||
operator: In
|
||||
values:
|
||||
- S1
|
||||
topologyKey: failure-domain.beta.kubernetes.io/zone
|
||||
podAntiAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 100
|
||||
podAffinityTerm:
|
||||
labelSelector:
|
||||
matchExpressions:
|
||||
- key: security
|
||||
operator: In
|
||||
values:
|
||||
- S2
|
||||
topologyKey: failure-domain.beta.kubernetes.io/zone
|
||||
containers:
|
||||
- name: with-pod-affinity
|
||||
image: k8s.gcr.io/pause:2.0
|
||||
10
prod-role.yaml
Normal file
10
prod-role.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
kind: Role
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
metadata:
|
||||
namespace: production
|
||||
name: dev-prod
|
||||
rules:
|
||||
- apiGroups: ["", "extensions", "apps"]
|
||||
resources: ["deployments", "replicasets", "pods"]
|
||||
verbs: ["list", "get", "watch"]
|
||||
|
||||
27
redis-with-pod-affinity.yaml
Normal file
27
redis-with-pod-affinity.yaml
Normal file
@ -0,0 +1,27 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: redis-cache
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: store
|
||||
replicas: 3
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: store
|
||||
spec:
|
||||
affinity:
|
||||
podAntiAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchExpressions:
|
||||
- key: app
|
||||
operator: In
|
||||
values:
|
||||
- store
|
||||
topologyKey: "kubernetes.io/hostname"
|
||||
containers:
|
||||
- name: redis-server
|
||||
image: redis:3.2-alpine
|
||||
13
rolebind.yaml
Normal file
13
rolebind.yaml
Normal file
@ -0,0 +1,13 @@
|
||||
kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
metadata:
|
||||
name: developer-role-binding
|
||||
namespace: development
|
||||
subjects:
|
||||
- kind: User
|
||||
name: anna
|
||||
apiGroup: ""
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: developer
|
||||
apiGroup: ""
|
||||
13
rolebindprod.yaml
Normal file
13
rolebindprod.yaml
Normal file
@ -0,0 +1,13 @@
|
||||
kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
metadata:
|
||||
name: production-role-binding
|
||||
namespace: production
|
||||
subjects:
|
||||
- kind: User
|
||||
name: anna
|
||||
apiGroup: ""
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: dev-prod
|
||||
apiGroup: ""
|
||||
21
security-context.yaml
Executable file
21
security-context.yaml
Executable file
@ -0,0 +1,21 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: security-context-demo
|
||||
spec:
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 2000
|
||||
volumes:
|
||||
- name: securevol
|
||||
emptyDir: {}
|
||||
containers:
|
||||
- name: sec-demo
|
||||
image: busybox
|
||||
command: ["sh", "-c", "sleep 3600"]
|
||||
volumeMounts:
|
||||
- name: securevol
|
||||
mountPath: /data/demo
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
11
selector-pod.yaml
Normal file
11
selector-pod.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: nginx
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx
|
||||
imagePullPolicy: IfNotPresent
|
||||
nodeSelector:
|
||||
disktype: ssd
|
||||
57
setup-docker.sh
Executable file
57
setup-docker.sh
Executable file
@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
# script that runs
|
||||
# https://kubernetes.io/docs/setup/production-environment/container-runtime
|
||||
|
||||
yum install -y vim yum-utils device-mapper-persistent-data lvm2
|
||||
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
||||
|
||||
# notice that only verified versions of Docker may be installed
|
||||
# verify the documentation to check if a more recent version is available
|
||||
|
||||
yum install -y docker-ce
|
||||
[ ! -d /etc/docker ] && mkdir /etc/docker
|
||||
|
||||
cat > /etc/docker/daemon.json <<EOF
|
||||
{
|
||||
"exec-opts": ["native.cgroupdriver=systemd"],
|
||||
"log-driver": "json-file",
|
||||
"log-opts": {
|
||||
"max-size": "100m"
|
||||
},
|
||||
"storage-driver": "overlay2",
|
||||
"storage-opts": [
|
||||
"overlay2.override_kernel_check=true"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
cat >> /etc/hosts << EOF
|
||||
{
|
||||
192.168.4.111 control.example.com control
|
||||
192.168.4.112 worker1.example.com worker1
|
||||
192.168.4.113 worker2.example.com worker2
|
||||
}
|
||||
EOF
|
||||
|
||||
mkdir -p /etc/systemd/system/docker.service.d
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl restart docker
|
||||
systemctl enable docker
|
||||
|
||||
if [[ $HOSTNAME = control.example.com ]]
|
||||
then
|
||||
firewall-cmd --add-port 6443/tcp --permanent
|
||||
firewall-cmd --add-port 2379-2380/tcp --permanent
|
||||
firewall-cmd --add-port 10250/tcp --permanent
|
||||
firewall-cmd --add-port 10251/tcp --permanent
|
||||
firewall-cmd --add-port 10252/tcp --permanent
|
||||
fi
|
||||
|
||||
if echo $HOSTNAME | grep worker
|
||||
then
|
||||
firewall-cmd --add-port 10250/tcp --permanent
|
||||
firewall-cmd --add-port 30000-32767/tcp --permanent
|
||||
fi
|
||||
|
||||
systemctl restart firewalld
|
||||
32
setup-kubetools.sh
Executable file
32
setup-kubetools.sh
Executable file
@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
# kubeadm installation instructions as on
|
||||
# https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
|
||||
|
||||
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
|
||||
[kubernetes]
|
||||
name=Kubernetes
|
||||
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
|
||||
EOF
|
||||
|
||||
# Set SELinux in permissive mode (effectively disabling it)
|
||||
setenforce 0
|
||||
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
|
||||
|
||||
# disable swap (assuming that the name is /dev/centos/swap
|
||||
sed -i 's/^\/dev\/mapper\/centos-swap/#\/dev\/mapper\/centos-swap/' /etc/fstab
|
||||
swapoff /dev/mapper/centos-swap
|
||||
|
||||
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
|
||||
|
||||
systemctl enable --now kubelet
|
||||
|
||||
# Set iptables bridging
|
||||
cat <<EOF > /etc/sysctl.d/k8s.conf
|
||||
net.bridge.bridge-nf-call-ip6tables = 1
|
||||
net.bridge.bridge-nf-call-iptables = 1
|
||||
EOF
|
||||
sysctl --system
|
||||
15
taint-toleration.yaml
Normal file
15
taint-toleration.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: nginx-toleration
|
||||
labels:
|
||||
env: test
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx-toleration
|
||||
image: nginx
|
||||
imagePullPolicy: IfNotPresent
|
||||
tolerations:
|
||||
- key: "example-key"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
36
webserver-with-pod-affinity.yaml
Normal file
36
webserver-with-pod-affinity.yaml
Normal file
@ -0,0 +1,36 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: web-server
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: web-store
|
||||
replicas: 3
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: web-store
|
||||
spec:
|
||||
affinity:
|
||||
podAntiAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchExpressions:
|
||||
- key: app
|
||||
operator: In
|
||||
values:
|
||||
- web-store
|
||||
topologyKey: "kubernetes.io/hostname"
|
||||
podAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchExpressions:
|
||||
- key: app
|
||||
operator: In
|
||||
values:
|
||||
- store
|
||||
topologyKey: "kubernetes.io/hostname"
|
||||
containers:
|
||||
- name: web-app
|
||||
image: nginx:1.12-alpine
|
||||
Loading…
Reference in New Issue
Block a user