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。