侧边栏壁纸
博主头像
DJ's Blog博主等级

行动起来,活在当下

  • 累计撰写 133 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

【Kubernetes】软件服务安装和配置

Administrator
2022-03-09 / 0 评论 / 0 点赞 / 118 阅读 / 7422 字

kuboard

  • 安装kuboard
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
  • 查看kuboard安装结果
kubectl get pods -n kuboard -o wide
NAME                               READY   STATUS    RESTARTS   AGE    IP                NODE         NOMINATED NODE   READINESS GATES
kuboard-etcd-g9fp7                 1/1     Running   0          109s   172.24.253.248    k8s-master   <none>           <none>
kuboard-questdb-59ddfb5c77-9qrdx   1/1     Running   0          41s    192.168.235.194   k8s-master   <none>           <none>
kuboard-v3-77b9c79bdf-cxwgz        1/1     Running   0          109s   192.168.235.193   k8s-master   <none>           <none>
  • 访问kuboard
  1. 地址:http://your-node-ip-address:30080
  2. 账号/密码:admin/Kuboard123

wordpress + mysql

image都是官方的,使用NodePort方式暴露端口来供外部访问

  • 创建namespace
kubectl create namespace wordpress
  • 编写mysql的yaml文件
vim wordpress-db.yaml
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
  • 部署yaml文件
kubectl apply -f wordpress-db.yaml
  • 查看wordpress命名空间下创建的pod资源
kubectl get pods -n wordpress -o wide
  • 编写wordpress的yaml文件
vim wordpress.yaml
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
        # 这里修改成mysql的pod的访问地址,账号和密码
        env:
        - name: WORDPRESS_DB_HOST
          # 这里是mysql的pod外面的service的IP地址,不是mysql的pod的IP地址
          value: 10.105.38.153:3306 
          # 这里也可以使用service的名称
          # 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:
  # NodePort类型的service会在node上都暴露端口给外部访问
  type: NodePort
  selector:
    app: wordpress
  ports:
  - name: wordpressport
    protocol: TCP
    port: 80
    targetPort: wdport
  • 查看wordpress这个namespace下面的service的详情信息
kubectl get svc -n wordpress -o wide

image.png

  • 查看wordpress这个namespace下面的pod的详情信息
kubectl get pods -n wordpress -o wide

image.png

  • 访问集群中部署了wordpress这个pod的node的外网访问IP和对外暴露的端口,即可访问wordpress

访问地址:http://121.40.226.50:31805/
如果是阿里云ECS需要开通端口的访问IP白名单

Spring Boot项目

image是自己的,使用Ingress来供外部访问

  • 创建namespace
kubectl create namespace springboot-demo
  • 使用maven命令打包springboot项目
mvn clean package -Dmaven.test.skip=true
  • 将打包生成的jar文件上传到服务器上
  • 创建Dockerfile
vim Dockerfile
FROM openjdk:8-jre-alpine
COPY springboot-demo-0.0.1-SNAPSHOT.jar /springboot-demo.jar
ENTRYPOINT ["java","-jar","/springboot-demo.jar"]
  • 构建Dockerfile,创建image
docker build -t springboot-demo-image .
  • 把image上传到阿里云镜像仓库
docker tag springboot-demo-image registry-vpc.cn-hangzhou.aliyuncs.com/djflying/springboot-demo-image:v1.0
docker login --username=djflying1988@163.com registry-vpc.cn-hangzhou.aliyuncs.com
docker push registry-vpc.cn-hangzhou.aliyuncs.com/djflying/springboot-demo-image:v1.0
  • 创建springboot的yaml文件
vim springboot-demo.yaml
# 以Deployment部署Pod
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: springboot-demo
  namespace: springboot-demo
spec: 
  selector: 
    matchLabels: 
      app: springboot-demo
  replicas: 1
  template: 
    metadata:
      labels: 
        app: springboot-demo
    spec: 
      containers: 
      - name: springboot-demo
        image: registry-vpc.cn-hangzhou.aliyuncs.com/djflying/springboot-demo-image:v1.0
        ports: 
        - containerPort: 8080
---
# 创建Pod的Service
apiVersion: v1
kind: Service
metadata: 
  name: springboot-demo
  namespace: 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
  namespace: springboot-demo
spec: 
  rules: 
  - host: springboot-demo.djflying.top
    http: 
      paths: 
      - path: /
        backend: 
          serviceName: springboot-demo
          servicePort: 80
  • 部署yaml文件
kubectl apply -f springboot-demo.yaml
  • 查看springboot-demo这个namespace下面的pod的详情信息
kubectl get pods -n springboot-demo -o wide

微服务应用

0

评论区