文档章节

如何在国内愉快的安装 Kubernetes

无聊的学习者
 无聊的学习者
发布于 2017/05/09 11:35
字数 3001
阅读 12667
收藏 169
点赞 4
评论 20

在国内安装 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
博文 16
码字总数 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
赞一个
Docker的那些事(Kubernetes+docker)

采用VMware的虚拟机虚拟化三台Centos7的系统,作为我们安装Docker的环境系统; 提示出现的问题 重新安装的过程中选择相应的网卡即可:安装的过程选择相应的网卡即可 选择相应的网卡 1.根据官...

owensliu ⋅ 02/28 ⋅ 0

直播 | Helm:强大的Kubernetes包管理工具

分享时间:4月24日 20:30 分享主题:Helm:强大的Kubernetes包管理工具 分享人介绍:赵化冰,程序员及开源软件爱好者,目前在NFV&SDN编排开源社区ONAP担任MSB项目负责人,致力于高性能,高可...

m2l0zgssvc7r69efdtj ⋅ 04/23 ⋅ 0

使用 Kubernetes 密钥来管理凭证

了解如何在 Kubernetes 集群中管理用户名和密码之类的敏感信息。 在先前的教程中,您学习了如何构建 Docker 映像、将其部署至 Kubernetes,并使代码在可供全世界访问的集群中运行。但是,您在...

Doug Tidwell ⋅ 05/04 ⋅ 0

如何开始Kubernetes第一步

摘要:从Hello Minikube到Kubernetes,再到示例微服务应用程序,本文围绕如何学习谷歌的容器编排工具。 每一次创新都带来新的问题。容器使其能够在方便的、可移植的方式中打包和运行应用程序...

xiaoli110 ⋅ 2017/10/26 ⋅ 0

使用Helm charts在Kubernetes 1.4 MongoDB上部署

有人说:“如果你觉得国庆7天短的话,那么接下来上班的7天你就知道有多长了【二哈】”,今天周一,照列来一波干货来袭,喜欢来收。 2016年9月26日发布Kubernetes 1.4版本,其中包括几项新的功...

精灵云 ⋅ 2016/10/10 ⋅ 0

一步步打造专属于自己的Kubernetes-1.8.4集群环境

一 kubernetes kubernetes 以下介绍摘自Wiki Kubernetes (通常称为K8s) 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。Google设计并捐赠给Cloud Native Computing ...

胖宝宝王 ⋅ 2017/12/08 ⋅ 0

Rancher 2.0快速上手指南

内容导读 准备一台Linux主机 启动Rancher服务器,进入Rancher UI 如何在Rancher UI下添加一个主机 如何导入现有的Kubernetes集群 如何在Rancher UI下添加一个容器 启动Calalog应用 如何使用高...

RancherLabs ⋅ 2017/10/10 ⋅ 0

Helm:强大的Kubernetes包管理工具

Helm是Kubernetes生态系统中的一个软件包管理工具。本文将介绍为何要使用Helm进行Kubernetes软件包管理,澄清Helm中使用到的相关概念,并通过一个具体的示例学习如何使用Helm打包,分发,安装...

Docker ⋅ 05/02 ⋅ 0

梁胜博士亲解Rancher 2.0:K8s之上的Rancher魔法

经过数月的努力,我们终于发布了Rancher 2.0 Technology Preview,这对Rancher Labs而言也是历史性的、值得铭记的一刻。 Rancher 1.x容器管理平台一直为市场和用户所喜爱,自2016年3月Ranch...

RancherLabs ⋅ 2017/09/30 ⋅ 0

手工离线部署k8s(v1.9)

手工离线部署k8s(v1.9) 1. 环境准备(采用一个master节点+两个node节点) master 192.168.2.40 node-1 192.168.2.41 node-2 192.168.2.42 绑定hosts 2.将master和node-1、node-2绑定hosts #vi......

yikayi ⋅ 04/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud gateway的RedisRateLimiter

序 本文主要研究下spring cloud gateway的RedisRateLimiter GatewayRedisAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/gateway/con......

go4it ⋅ 昨天 ⋅ 0

169. Majority Element - LeetCode

Question 169. Majority Element Solution 思路:构造一个map存储每个数字出现的次数,然后遍历map返回出现次数大于数组一半的数字. 还有一种思路是:对这个数组排序,次数超过n/2的元素必然在中...

yysue ⋅ 昨天 ⋅ 0

NFS

14.1 NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC...

派派菠菜 ⋅ 昨天 ⋅ 0

18.进入编辑模式 vim命令模式 实践

5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践 5.5 进入编辑模式: i 在当前字符前插入 I 在光标所在行的行首插入 a 在当前字符后插入 A 在光标所在行的行尾插入 o 在当前所在行的下一行插入...

王鑫linux ⋅ 昨天 ⋅ 0

阻塞队列(2)--LinkedBlockingDeque底层实现

2.1 LinkedBlockingQueue是什么? 1.1 LinkedBlockingQueue是一个阻塞式的队列,继承自AbstractBlockingQueue,间接的实现了Queue接口和Collection接口。底层以链表的形式保存数据(双向链表,...

yokol ⋅ 昨天 ⋅ 0

NFS介绍 NFS服务端安装配置 NFS配置选项

14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三...

lyy549745 ⋅ 昨天 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 昨天 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 昨天 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 昨天 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部