kubectl create namespace wordpress
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: mysql-deploy
namespace: wordpress
labels:
app: mysql
spec:
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
name: dbport
env:
- name: MYSQL_ROOT_PASSWORD
value: rootPassW0rd
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_USER
value: wordpress
- name: MYSQL_PASSWORD
value: wordpress
volumeMounts:
- name: db
mountPath: /var/lib/mysql
volumes:
- name: db
hostPath:
path: /var/lib/mysql
---
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: wordpress
spec:
selector:
app: mysql
ports:
- name: mysqlport
protocol: TCP
port: 3306
targetPort: dbport
kubectl apply -f wordpress-db.yaml
kubectl get pods -n wordpress
kubectl get svc mysql -n wordpress
kubectl describe svc mysql -n wordpress
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: wordpress-deploy
namespace: wordpress
labels:
app: wordpress
spec:
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: wdport
env:
- name: WORDPRESS_DB_HOST
value: mysql:3306
- name: WORDPRESS_DB_USER
value: wordpress
- name: WORDPRESS_DB_PASSWORD
value: wordpress
---
apiVersion: v1
kind: Service
metadata:
name: wordpress
namespace: wordpress
spec:
type: NodePort
selector:
app: wordpress
ports:
- name: wordpressport
protocol: TCP
port: 80
targetPort: wdport
kubectl apply -f wordpress.yaml
kubectl get pods -n wordpress
kubectl get svc -n wordpress # 获取到转发后的端口,如30063
mac浏览器上访问集群中任意宿主机节点的IP:31016
编写服务代码-->编写Dockerfile制作镜像-->上传镜像到仓库-->编写K8S文件-->创建
创建Spring Boot项目编写如下代码:
@RestController
public class K8SController {
@RequestMapping("/k8s")
public String k8s(){
return "hello K8s!";
}
}
mvn clean pakcage
scp -P22 springboot-demo-0.0.1-SNAPSHOT.jar [email protected]:/root/springboot-demo
mkdir springboot-demo
cd springboot-demo
vi Dockerfile
FROM openjdk:8-jre-alpine
COPY springboot-demo-0.0.1-SNAPSHOT.jar /springboot-demo.jar
ENTRYPOINT ["java","-jar","/springboot-demo.jar"]
docker build -t springboot-demo-image .
docker run -d --name s1 springboot-demo-image
docker inspect s1
curl ip:8080/k8s
# 登录阿里云镜像仓库
# 这里注意如果是私有的仓库,集群内所有节点都需要登录。
docker login --username=dwb29872937343 registry.cn-beijing.aliyuncs.com
docker tag springboot-demo-image registry.cn-beijing.aliyuncs.com/dwb_repository/springboot-demo-image:v1.0
docker push registry.cn-beijing.aliyuncs.com/dwb_repository/springboot-demo-image:v1.0
vi springboot-demo.yaml
kubectl apply -f springboot-demo.yaml
# 以Deployment部署Pod
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-demo
spec:
selector:
matchLabels:
app: springboot-demo
replicas: 1
template:
metadata:
labels:
app: springboot-demo
spec:
containers:
- name: springboot-demo
image: registry.cn-beijing.aliyuncs.com/dwb_repository/springboot-demo-image:v1.0
ports:
- containerPort: 8080
---
# 创建Pod的Service
apiVersion: v1
kind: Service
metadata:
name: springboot-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: springboot-demo
---
# 创建Ingress,定义访问规则,一定要记得提前创建好nginx ingress controller
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: springboot-demo
spec:
rules:
- host: springboot.wenbin.com
http:
paths:
- path: /
backend:
serviceName: springboot-demo
servicePort: 80
kubectl get pods
kubectl get pods -o wide
curl pod_id:8080/k8s
kubectl get svc
kubectl scale deploy springboot-demo --replicas=5
192.168.0.61 springboot.wenbin.com
http://springboot.wenbin.com/k8s