kubernetes-发布netcore项目

一,安装k8s环境

  参考:https://www.yuque.com/fairy-era/yg511q/lmy7gc

二,通过Dockerfile文件将本地项目打包成镜像。发送到本地仓库或者阿里云(https://promotion.aliyun.com/ntms/act/kubernetes.html),方便在node机器上拉取镜像,不然每个node机器

都要重新制作镜像。

三,在k8s的master机器上,制作deployment,rs,pod,service(容器外可以访问必须的)。yaml文件参考,如下

apiVersion: apps/v1 # 必须字段
kind: Deployment # 必须字段
metadata: # 必须字段
  name: ybapi-deployment # 部署的 deployment 的名称
  namespace: dev # 名称空间
  labels: # 标签
    app: ybapi-deployment
spec: # 规格,期望状态,必须字段
ReplicaSet: 2 # pod数量 selector: # 选择器,用来帮助 Deployment 来筛选 Pod,必须字段 matchLabels: # 匹配标签 app: ybapi # 通常而言,和 template 中的 metadata.labels 保持一致 template: # Pod 的模板,必须字段 metadata: # Pod 的 metadata(元数据) name: ybapi labels: app: ybapi spec: containers:
- name: ybapi image: ybapi:1.0 # 这里可以直接填写仓库地址的。 imagePullPolicy: IfNotPresent restartPolicy: Always --- apiVersion: v1 kind: Service metadata: name: ybapi-svc namespace: dev # 名称空间 spec: selector: app: ybapi type: NodePort ports: - port: 5194 # svc 的访问端口 name: canary-ybapi targetPort: 5194 # Pod 的访问端口 protocol: TCP nodePort: 31094 # 在机器上开端口,浏览器访问

执行 kubectl apply -f xxx.yaml。即可,挺方便的。ReplicaSet 是管理和控制pod运行的。

如果直接从镜像仓库拉去镜像,需要在k8s中创建secret。

# -n demo :表示该密钥将只在指定的名称空间 demo 中生效
# docker-registry aliyun :指定 Docker 镜像仓库的名称
# --docker-server:Docker 镜像仓库的地址
# --docker-username:Docker 镜像仓库的用户名
# --docker-password:Docker 镜像仓库的密码
kubectl create secret -n demo docker-registry aliyun \
       --docker-server=registry.cn-shanghai.aliyuncs.com \
       --docker-username=xudaxian \
       --docker-password=123456

具体使用案例:

apiVersion: v1
kind: Namespace
metadata:
  name:  demo 
spec: {} 
status: {} 

# 以上是 namespace 
---
apiVersion: v1
kind: Pod
metadata:
  name: demo-pod
  namespace: demo 
  labels:
    app: nginx
spec:
  containers:
  imagePullSecrets: # Pull镜像时使用的 secret 名称,以 key:secretkey 格式指定
    - name:  aliyun 
  - name: nginx
    image: nginx:1.20.2 # Docker 的镜像名称,和 Docker 命令一样,my-registry.example.com:5000/example/web-example:v1.0,实际开发中,建议锁定镜像的版本。
    imagePullPolicy: Always # 镜像拉取策略:IfNotPresent(默认)、Always、Never
  - name: arcgis
    image: registry.cn-shanghai.aliyuncs.com/xudaxian/arcgis/v1.0 
    imagePullPolicy: Always

关于k8s负载均衡的实现,也是依靠其他工具,如nginx。

posted @ 2023-08-07 15:15  vba是最好的语言  阅读(31)  评论(0编辑  收藏  举报