1、传递环境变量创建mysql
[root@master-101 ~]#kubectl create service clusterip mydb --tcp=3306:3306 --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: mydb
name: mydb
spec:
ports:
- name: 3306-3306
port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mydb
type: ClusterIP
status:
loadBalancer: {}
[root@master-101 ~]#kubectl create service clusterip mydb --tcp=3306:3306 --dry-run=client -o yaml > service-mydb.yaml
[root@master-101 ~]#vim service-mydb.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: mydb
name: mydb
spec:
ports:
- name: 3306-3306
port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mydb
type: ClusterIP
status:
loadBalancer: {}
[root@master-101 ~]#kubectl apply -f service-mydb.yaml
service/mydb created
[root@master-101 ~]#kubectl run mydb --image=mysql:8.0 --restart=Never --port=3306 --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: mydb
name: mydb
spec:
containers:
- image: mysql:8.0
name: mydb
ports:
- containerPort: 3306
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}
[root@master-101 ~]#kubectl run mydb --image=mysql:8.0 --restart=Never --port=3306 --dry-run=client -o yaml > mydb.yaml
[root@master-101 ~]#vim mydb.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
app: mydb
name: mydb
spec:
containers:
- image: mysql:8.0
name: mydb
env:
- name: MYSQL_RANDOM_ROOT_PASSWORD
value: "1"
- name: MYSQL_DATABASE
value: "wpdb"
- name: MYSQL_USER
value: "wordpress"
- name: MYSQL_PASSWORD
value: "123456 #注意:数字要用引号引起来转成字符串
[root@master-101 ~]#kubectl apply -f mydb.yaml
pod/mydb created
2、传递环境变量创建wordpress
[root@master-101 ~]#kubectl create service nodeport wordpress --tcp=80:80 --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: wordpress
name: wordpress
spec:
ports:
- name: 80-80
port: 80
protocol: TCP
targetPort: 80
selector:
app: wordpress
type: NodePort
status:
loadBalancer: {}
[root@master-101 ~]#kubectl create service nodeport wordpress --tcp=80:80 --dry-run=client -o yaml > service-wordpress.yaml
[root@master-101 ~]#vim service-wordpress.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: wordpress
name: wordpress
spec:
ports:
- name: 80-80
port: 80
protocol: TCP
targetPort: 80
selector:
app: wordpress
type: NodePort
status:
loadBalancer: {}
[root@master-101 ~]#kubectl apply -f service-wordpress.yaml
service/wordpress created
[root@master-101 ~]#kubectl run wordpress --image=wordpress:6.1-apache --restart=Never --port=80 --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: wordpress
name: wordpress
spec:
containers:
- image: wordpress:6.1-apache
name: wordpress
ports:
- containerPort: 80
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}
[root@master-101 ~]#kubectl run wordpress --image=wordpress:6.1-apache --restart=Never --port=80 --dry-run=client -o yaml > wordpress.yaml
[root@master-101 ~]#vim wordpress.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
app: wordpress
name: wordpress
namespace: demo
spec:
containers:
- image: wordpress:6.1-apache
env:
- name: WORDPRESS_DB_HOST
value: wordpress
- name: WORDPRESS_DB_NAME
value: wordpress
- name: WORDPRESS_DB_USER
value: wordpress
- name: WORDPRESS_DB_PASSWORD
value: "123456" #注意:变量数字需加上引号变为字符串
name: wordpress
ports:
- containerPort: 80
dnsPolicy: ClusterFirst
restartPolicy: Never
[root@master-101 ~]#kubectl apply -f wordpress.yaml
pod/wordpress created
3、为mysql添加探针
#为mysql添加探针:
[root@k8s-master01 ~]#vim mydb-liveness.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
app: mydb
name: mydb
spec:
containers:
- image: mysql:8.0
name: mydb
env:
# - name: MYSQL_RANDOM_ROOT_PASSWORD
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_DATABASE
value: "wpdb"
- name: MYSQL_USER
value: "wordpress"
- name: MYSQL_PASSWORD
value: "123456"
ports:
- name: mysqlport
containerPort: 3306
startupProbe:
exec:
command: ['/bin/sh', '-c', '[ "$(mysqladmin -uwordpress -p123456 ping)" == "mysqld is alive" ]']
initialDelaySeconds: 30
timeoutSeconds: 1
periodSeconds: 5
livenessProbe:
tcpSocket:
port: mysqlport
periodSeconds: 5
initialDelaySeconds: 5
readinessProbe:
tcpSocket:
port: mysqlport
initialDelaySeconds: 15
timeoutSeconds: 2
periodSeconds: 5
failureThreshold: 3
[root@k8s-master01 ~]#kubectl describe pod mydb
......
Restart Count: 1
Liveness: tcp-socket :mysqlport delay=5s timeout=1s period=5s #success=1 #failure=3
Readiness: tcp-socket :mysqlport delay=15s timeout=2s period=5s #success=1 #failure=3
Startup: exec [/bin/sh -c [ "$(mysqladmin -uwordpress -p123456 ping)" == "mysqld is alive" ]] delay=30s timeout=1s period=5s #success=1 #failure=3
......
4、为wordpress添加探针
[root@k8s-master01 ~]#vim wordpress-liveness.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
app: wordpress
name: wordpress
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/gtsre/wordpress:6.0.2
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: "mydb"
- name: WORDPRESS_DB_NAME
value: "wpdb"
- name: WORDPRESS_DB_USER
value: "wordpress"
- name: WORDPRESS_DB_PASSWORD
value: "123456"
ports:
- name: http
containerPort: 80
startupProbe:
tcpSocket:
port: http
initialDelaySeconds: 30
failureThreshold: 3
periodSeconds: 3
livenessProbe:
httpGet:
host: 127.0.0.1
path: /
port: 80
scheme: HTTP
initialDelaySeconds: 40
periodSeconds: 3
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
readinessProbe:
httpGet:
host: 127.0.0.1
path: /
port: http
scheme: HTTP
initialDelaySeconds: 40
periodSeconds: 3
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}
[root@k8s-master01 ~]#kubectl describe pod wordpress
......
Ready: True
Restart Count: 0
Liveness: http-get http://127.0.0.1:80/ delay=40s timeout=5s period=3s #success=1 #failure=3
Readiness: http-get http://127.0.0.1:http/ delay=40s timeout=5s period=3s #success=1 #failure=3
Startup: tcp-socket :http delay=30s timeout=1s period=3s #success=1 #failure=3
......
5、资源限制
[root@k8s-master01 ~]#vim mydb-resource.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
app: mydb
name: mydb
spec:
containers:
- image: mysql:8.0
name: mydb
resources:
requests: #最低要求(下限)
memory: "512Mi"
cpu: "1"
limits: #最高限制(上限)
memory: "512Mi"
cpu: "1"
env:
# - name: MYSQL_RANDOM_ROOT_PASSWORD
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_DATABASE
value: "wpdb"
- name: MYSQL_USER
value: "wordpress"
- name: MYSQL_PASSWORD
value: "123456"
ports:
- name: mysqlport
containerPort: 3306
startupProbe:
exec:
command: ['/bin/sh', '-c', '[ "$(mysqladmin -uwordpress -p123456 ping)" == "mysqld is alive" ]']
initialDelaySeconds: 30
timeoutSeconds: 1
periodSeconds: 5
livenessProbe:
tcpSocket:
port: mysqlport
periodSeconds: 5
initialDelaySeconds: 5
readinessProbe:
tcpSocket:
port: mysqlport
initialDelaySeconds: 15
timeoutSeconds: 2
periodSeconds: 5
failureThreshold: 3
[root@k8s-master01 ~]#vim wordpress-resource.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
app: wordpress
name: wordpress
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/gtsre/wordpress:6.0.2
name: wordpress
resources:
requests: #下限
memory: "512Mi"
cpu: "1"
limits: #上限
memory: "512Mi"
cpu: "1"
env:
- name: WORDPRESS_DB_HOST
value: "mydb"
- name: WORDPRESS_DB_NAME
value: "wpdb"
- name: WORDPRESS_DB_USER
value: "wordpress"
- name: WORDPRESS_DB_PASSWORD
value: "123456"
ports:
- name: http
containerPort: 80
startupProbe:
tcpSocket:
port: http
initialDelaySeconds: 30
failureThreshold: 3
periodSeconds: 3
livenessProbe:
httpGet:
host: 127.0.0.1
path: /
port: 80
scheme: HTTP
initialDelaySeconds: 40
periodSeconds: 3
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
readinessProbe:
httpGet:
host: 127.0.0.1
path: /
port: http
scheme: HTTP
initialDelaySeconds: 40
periodSeconds: 3
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}