文档章节

如何在国内愉快的安装 Kubernetes

无聊的学习者
 无聊的学习者
发布于 2017/05/09 11:35
字数 3001
阅读 13606
收藏 169

在国内安装 K8S,一直是大家很头痛的问题,各种翻墙,关键是还不知道需要下载什么工具。蛋疼。而且大部分国内教程要么太老,要么太挫。今天就来告诉大家如何在国内愉快的安装K8S。

安装环境

使用的是 kubeadm 进行安装,过程基本安装官方教程来的。

类目 型号
平台 阿里云 VPC
系统 Centos 7.3
Docker 版本 1.12.6
K8S版本 1.6.*


虽然写的是阿里云 VPC,但是虚拟机也支持。影响不大。

 

节点 作用 数量 推荐配置

Master

K8S 的 master 节点(etcd,API,controller。。。。) 1 1核2G
Node 应用节点 2 2核4G

如果仅仅是本地安装玩一玩,都可以配置成1核1G。

接下来的过程,如果有翻墙主机的情况,按照流程走就可以,没有的话直接看下载好的结果就可以了。

 

安装过程

安装过程基本包括下载软件,下载镜像,主机配置,启动 Master 节点,配置网络,启动 Node 节点。

下载软件

这个步骤有翻墙能力的人可以直接按照步骤来,没有的话可以使用我打包好的1.6.2软件包。

首先在自己的翻墙的主机配置K8S源。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

配置好后,下载软件包

yum install -y -downloadonly kubelet kubeadm kubectl kubernetes-cni

 将下载好的所有 RPM 打包,发回到本地。这样就完成了K8S软件包的下载了。

下载好的 RPM:

https://pan.baidu.com/s/1clIpjC cp6h

下载镜像

下载镜像可以直接使用我提供的脚本,前提是要能翻墙,你懂的。我自己也已经下载过一份了。提供给大家使用。

#!/usr/bin/env bash

images=(
    kube-proxy-amd64:v1.6.2
    kube-controller-manager-amd64:v1.6.2
    kube-apiserver-amd64:v1.6.2
    kube-scheduler-amd64:v1.6.2
    kubernetes-dashboard-amd64:v1.6.0
    k8s-dns-sidecar-amd64:1.14.1
    k8s-dns-kube-dns-amd64:1.14.1
    k8s-dns-dnsmasq-nanny-amd64:1.14.1
    etcd-amd64:3.0.17
    pause-amd64:3.0
)

for imageName in ${images[@]} ; do
    docker pull gcr.io/google_containers/$imageName
    docker tag gcr.io/google_containers/$imageName registry.cn-beijing.aliyuncs.com/bbt_k8s/$imageName
    docker push registry.cn-beijing.aliyuncs.com/bbt_k8s/$imageName
done

quay.io/coreos/flannel:v0.7.0-amd64
docker tag quay.io/coreos/flannel:v0.7.0-amd64 registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64
docker push registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64

关于这个脚本我解释一下。这个脚本是下载常用的镜像,然后回传到国内的源上,可以将registry.cn-beijing.aliyuncs.com/bbt_k8s改成你自己的地址,必须先用docker login 进行登录,否则可能会出现权限认证错误。推荐使用阿里云,网易的服务。如果使用自己的地址,请注意下面的配置,根据自己的情况进行修改,不在累赘了。

 

镜像版本号说明:

软件 版本 说明 备注
kube-proxy-amd64
kube-controller-manager-amd64
kube-apiserver-amd64
kube-scheduler-amd64
v1.6.2 这几个镜像一般跟着 K8S 的版本走,例如我安装的是 K8S 的1.6.2,那么版本号就是 v1.6.2  
kubernetes-dashboard-amd64 v1.6.0 这个是 K8S 的控制台(虽然并不好用,单但是最起码很适合新手),一般跟着 K8S 的大版本好走,例如我安装 K8S 的1.6.2,大版本是1.6,所以版本号是 v1.6.0  

k8s-dns-sidecar-amd64

k8s-dns-kube-dns-amd64

k8s-dns-dnsmasq-nanny-amd64

1.14.1 这个是 DNS 服务,一般不跟随 K8S 进行升级,具体版本可以参考https://kubernetes.io/docs/getting-started-guides/kubeadm/  
etcd-amd64 3.0.17 这个是 etcd 服务,一般不跟随 K8S 进行升级,具体版本可以参考https://kubernetes.io/docs/getting-started-guides/kubeadm/  
pause-amd64 3.0 一般不跟随 K8S 进行升级,具体版本可以参考https://kubernetes.io/docs/getting-started-guides/kubeadm/ 已经很长时间版本都是3.0了。
flannel v0.7.0-amd64 网络组件,我这里使用的flannel,当然也可以使用其它的。具体版本信息参考对应的网络组件,例如flannel是https://github.com/coreos/flannel/tree/master/Documentation  

OK,这些镜像下载完成就 OK 了,没有翻墙工具的,就直接跳过吧。

 

主机配置

上面的内容下载好后,我们就可以安装了。

更新系统

没什么可以介绍的。

yum update -y

安装 Docker

K8S 的1.6.x 版本仅仅在 Docker 1.12上测试过,虽然最新版本 Docker 也可以运行,但是不推荐安装最新版本,免得遇到什么问题。

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh /dev/stdin 1.12.6

安装完成后,禁用 Docker 的更新,禁用方式为,在/etc/yum.conf添加

exclude=docker-engine*

配置 Docker

主要是配置一些加速器,避免自己下载镜像速度太慢。

修改/etc/docker/daemon.json 添加如下内容:

{
  "registry-mirrors": ["https://自己的加速地址"]
}

之后就是启动Docker 的服务,

systemctl daemon-reload
systemctl enable docker
systemctl start docker

 

修改网络

主要是开启桥接相关支持,这个是 flannel 需要的配置,具体是否需要,看自己的网络组件选择的是什么。

修改/usr/lib/sysctl.d/00-system.conf,将net.bridge.bridge-nf-call-iptables改成1.之后修改当前内核状态

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

 

安装K8S包

上传RPM 包,到自己的服务器上,然后执行

yum install -y *.rpm

之后开启kubelet的开机启动

systemctl enable kubelet

然后配置 kubelet,修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf成如下文件

[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"
Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_ALIYUN_ARGS=--pod-infra-container-image=registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s/pause-amd64:3.0"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_EXTRA_ARGS $KUBELET_ALIYUN_ARGS

在这里主要修正2个问题,一个是将 POD 的基础容器修改为我们自己源里面的,另外一个是最新版本的 K8S 的资源管理和 Docker 默认的资源管理方式有冲突,这里把这块给删除了。具体可以参考https://github.com/kubernetes/release/issues/306

然后重新 reload 服务。

systemctl daemon-reload

这样就完成了主机环境的初始化,如果是使用虚拟机,拷贝3份就可以了。如果是实体机,3台都按照这个步骤来一遍就好了。然后为每一台主机根据类型设置好 HostName,K8S会把 HostName 当做主机标识。

启动 Master

配置完主机后,我们就可以启动我们的 Master 节点了,通常 Master 节点推荐2-3个,本地测试我们就简单一些,一个节点就可以了。

export KUBE_REPO_PREFIX="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s"
export KUBE_ETCD_IMAGE="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s/etcd-amd64:3.0.17"
kubeadm init --kubernetes-version=v1.6.2 --pod-network-cidr=10.96.0.0/12

前面2个环境变量配置,是让 kubeadm 初始化的时候,使用我们的镜像源下载镜像。

最后 kubeadm init 是初始化 Master 节点。其中需要配置的参数我说明一下。

参数  意义 备注
--kubernetes-version K8S 的版本号,根据自己下载的镜像和 RPM 版本选择。 我这里使用的1.6.2,所以版本为v1.6.2.
--pod-network-cidr POD 的网络,只要不和主机网络冲突就可以,我这里使用的是10.96.0.0/12 这个和上面/etc/systemd/system/kubelet.service.d/10-kubeadm.conf里面声明的KUBELET_DNS_ARGS挂钩,请一同修改。

执行完毕后,稍等一阵,就完成了。

kubeadm init --kubernetes-version=v1.6.2 --pod-network-cidr=10.96.0.0/12
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.2
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[preflight] Starting the kubelet service
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [node0 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.61.41]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 14.583864 seconds
[apiclient] Waiting for at least one node to register
[apiclient] First node has registered after 6.008990 seconds
[token] Using token: e7986d.e440de5882342711
[apiconfig] Created RBAC rules
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run (as a regular user):

  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  http://kubernetes.io/docs/admin/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join --token 1111.1111111111111 *.*.*.*:6443

安装完成后,有一个内容非常重要,查看安装日志,拷贝类似于下面的语句,这条语句用来初始化之后的节点。

kubeadm join --token 11111.11111111111111 *.*.*.*:6443

 

接下来我们就可以去看看我们 K8S 的状态。我这使用的是 Mac。 Linux 和 Windows 的同学自行处理。

安装 kubectl

brew install kubectl

然后拷贝 Master 节点上的/etc/kubernetes/admin.conf文件到本机的~/.kube/config

之后执行kebectl get node。我这里已经安装完毕了,所以有全部信息,只要能看到节点,就算是成功了。

安装网络组件

接下来我们安装网络组件,我这里使用的是flannel。创建2个文件

kube-flannel-rbac.yml

# Create the clusterrole and clusterrolebinding:
# $ kubectl create -f kube-flannel-rbac.yml
# Create the pod using the same namespace used by the flannel serviceaccount:
# $ kubectl create --namespace kube-system -f kube-flannel.yml
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: flannel
rules:
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - nodes/status
    verbs:
      - patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: flannel
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flannel
subjects:
- kind: ServiceAccount
  name: flannel
  namespace: kube-system

kube-flannel-ds.yaml

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flannel
  namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    tier: node
    app: flannel
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "type": "flannel",
      "delegate": {
        "isDefaultGateway": true
      }
    }
  net-conf.json: |
    {
      "Network": "10.96.0.0/12",
      "Backend": {
        "Type": "vxlan"
      }
    }
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: kube-flannel-ds
  namespace: kube-system
  labels:
    tier: node
    app: flannel
spec:
  template:
    metadata:
      labels:
        tier: node
        app: flannel
    spec:
      hostNetwork: true
      nodeSelector:
        beta.kubernetes.io/arch: amd64
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      serviceAccountName: flannel
      containers:
      - name: kube-flannel
        image: registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64
        command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
        securityContext:
          privileged: true
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        volumeMounts:
        - name: run
          mountPath: /run
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      - name: install-cni
        image: registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64
        command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ]
        volumeMounts:
        - name: cni
          mountPath: /etc/cni/net.d
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      volumes:
        - name: run
          hostPath:
            path: /run
        - name: cni
          hostPath:
            path: /etc/cni/net.d
        - name: flannel-cfg
          configMap:
            name: kube-flannel-cfg

然后使用使用命令进行配置。

kubectl create -f kube-flannel-rbac.yml
kubectl create -f kube-flannel-ds.yaml

 

启动 Node

分别在2个Node 节点,执行下面的命令。

export KUBE_REPO_PREFIX="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s"
export KUBE_ETCD_IMAGE="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s/etcd-amd64:3.0.17"
kubeadm join --token 1111.111111111111 *.*.*.*:6443

其中 kubeadm join 请参考启动 Master 节点中的内容。

 

其它

理论上我们安装到这里,K8S 就已经可以使用了。接下来主要是K8S的 Dashboard 的安装,仅供参考,不一定要安装。

安装 DashBoard 工具

创建文件kubernetes-dashboard.yaml

# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Configuration to deploy release version of the Dashboard UI compatible with
# Kubernetes 1.6 (RBAC enabled).
#
# Example usage: kubectl create -f <this_file>

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: kubernetes-dashboard
  template:
    metadata:
      labels:
        app: kubernetes-dashboard
    spec:
      containers:
      - name: kubernetes-dashboard
        image: registry.cn-beijing.aliyuncs.com/bbt_k8s/kubernetes-dashboard-amd64:v1.6.0
        imagePullPolicy: Always
        ports:
        - containerPort: 9090
          protocol: TCP
        args:
          # Uncomment the following line to manually specify Kubernetes API server Host
          # If not specified, Dashboard will attempt to auto discover the API server and connect
          # to it. Uncomment only if the default does not work.
          # - --apiserver-host=http://my-address:port
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30
      serviceAccountName: kubernetes-dashboard
      # Comment the following tolerations if Dashboard must not be deployed on master
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 9090
  selector:
    app: kubernetes-dashboard

 

创建文件dashboard-rbac.yaml

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: dashboard-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin 
subjects:
- kind: ServiceAccount
  name: default
  namespace: kube-system

之后执行

kubectl create -f dashboard-rbac.yml
kubectl create -f kubernetes-dashboard.yaml

 

之后用下面的命令,获取到对应端口号。主要是看 NodePort:        <unset>    31867/TCP这样的内容。然后使用http://NodeIp:NodePort访问就可以了,其中 NodeIp 为 Master 或者 Node 的 IP,NodePort为NodePort的端口。

kubectl describe --namespace kube-system service kubernetes-dashboard

 

到此,这份安装教程就到这里结束了。最后奉上一份安装后的截图。

 

© 著作权归作者所有

共有 人打赏支持
无聊的学习者
粉丝 13
博文 17
码字总数 8514
作品 0
青岛
加载中

评论(20)

无聊的学习者
无聊的学习者

引用来自“ak_birdofprey”的评论

作为菜鸟级工程师;我还是喜欢本地源一点点!!!

你值得本地源 是指 rpm的源 还是 docker 的。或者说不用kubeadm 使用手动部署呢? 如果是手动部署 这里面有一些配置还是可以参考的
小黑小别姬
小黑小别姬

引用来自“无聊的学习者”的评论

引用来自“小黑小别姬”的评论

现在用 rancher的多吗?

我之前用过 使用的是cettle 但是感觉稳定性欠佳 如果小规模的情况下 可以试试 至于在Rancher 部署k8s也可以 不过不过不是很推荐 有这样的成本 自己手动部署K8S要方便的多 若果论优劣 小规模的话 还是推荐使用rancher
大哥, 人家叫 Cattle .

你说的这样的成本是哪样的成本 ?
无聊的学习者
无聊的学习者

引用来自“小黑小别姬”的评论

现在用 rancher的多吗?

我之前用过 使用的是cettle 但是感觉稳定性欠佳 如果小规模的情况下 可以试试 至于在Rancher 部署k8s也可以 不过不过不是很推荐 有这样的成本 自己手动部署K8S要方便的多 若果论优劣 小规模的话 还是推荐使用rancher
晒太阳的小猪
晒太阳的小猪
作为菜鸟级工程师;我还是喜欢本地源一点点!!!
晒太阳的小猪
晒太阳的小猪
作为菜鸟级工程师;我还是喜欢本地源一点点!!!
晒太阳的小猪
晒太阳的小猪
作为菜鸟级工程师;我还是喜欢本地源一点点!!!
小黑小别姬
小黑小别姬
现在用 rancher的多吗?
得自由
得自由
推荐一个免费的梯子,得自由,devpn.info
jack_jones
jack_jones
赞一个
MAC环境下Docker整合Kubernetes

一:MAC系统安装最新的Docker版本(18.6.0),安装好之后启动Docker容器,切换到Kubernetes如图勾选 二:有个地方要注意的是添加国内注册地址(GreatWall大家懂得) 三:在启动Kubernetes之前需要...

WALK_MAN
08/02
0
0
k8s上安装并初始化Helm。minikube

helm简介 Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用。 Helm 采用客户端/服务器架构,有如下组件组成: Helm CLI 是 Helm 客户端,可以在...

xiaomin0322
07/15
0
0
Helm - Kubernetes服务编排的利器

Helm介绍   在Kubernetes中部署容器云应用(容器或微服务编排)是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过Helm能够帮助开发者定义、...

编程玩家
07/15
0
0
Docker宣布拥抱k8s,k8s将一统天下?

Docker官方于DockerCon EU 2017上宣布将在下一个Docker企业版中支持Kubernetes。容器编排之战似乎胜负已分,Kubernetes即将一统天下?容器市场下一步会如何发展? 2017年10月17日,全球瞩目的...

RancherLabs
2017/10/18
0
0
Docker 社区版中 Kubernetes 开启

Docker 社区版从 17.12 版本开始已经提供了对 Kubernetes 的支持。但是由于其安装过程依赖的镜像服务在国内访问很不稳定,很多朋友都无法配置成功。阿里提供了一个简单的工具帮助大家开启 Do...

well
03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

keras vgg19 InceptionResNetV2 模型使用

参考,一些常见模型的使用,不过预处理函数需要修改 https://github.com/fchollet/deep-learning-models 预训练模型的使用和准确率 https://keras.io/applications/ Model Size Top-1 Accura...

阿豪boy
昨天
0
0
集群和分布式

单机模式 例如有一个在线商城系统,如果这个系统业务量很小,比如在校学生自己随便写的一个小项目,所有的代码都放在一个项目store-web中,然后把这个项目部署在一台服务器上。整个项目所有的...

SuperHeroes
昨天
0
0
后端bug list3

管理员登录: 1. 当前登录用户名 2. 文印订单bug: 搜索不起作用:服务商、支付状态、下单时间 重点: 预览 & 打印 & 微信信息回调 3. 财务结算 需支持商家和管理员,目前财务模块为空。 重点...

勇恒
昨天
1
0
TypeScript基础入门 - 函数 - 可选参数和默认参数

转载 TypeScript基础入门 - 函数 - 可选参数和默认参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.0 为了保证后面的学习演示需要安装下ts-node,这样后面的每...

durban
昨天
0
0
(二)Nginx安装与配置

概述 下载并安装Nginx组件 配置Nginx环境,本文不会讲完,后续会继续讲 1.配置默认虚拟主机。2.Nginx用户认证。3.Nginx域名重定向 安装 Nginx 1.下载和解压Nginx, #进入下载目录cd /usr/lo...

杉下
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部