一、安装方式介绍

1、yum 安装

目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能获得最新版本的软件,而所有软件的依赖又不能自己指定,尤其是你的操作系统版本如果低的话,使用 yum 源安装的 Kubernetes 的版本也会受到限制,通常会低于官方很多版本,我安装的时候目前官方版本为1.12,而 yum 源中的版本为1.5.2

请查看博文:http://blog.51cto.com/wzlinux/2321767

2、二进制安装

使用二进制文件安装,好处是可以安装任意版本的 Kubernetes,对一些新版本新功能追求的同学比较合适,坏处是配置比较复杂,很多软件包因为一些原因,我们在大陆是访问不到的。

3、Kubeadm 安装

kubeadm 是 Kubernetes 官方提供的用于快速安装 Kubernetes 集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验 kubeadm 可以学习到 Kubernetes 官方在集群配置上一些新的最佳实践。

请查看博文:http://blog.51cto.com/wzlinux/2322616

这里我们选用第二种方式安装。

二、环境准备

1、软件版本

我们安装的版本基本是目前最新的版本。

软件 版本
kubernetes v1.12.2
CentOS 7.5 CentOS Linux release 7.5.1804
Docker v18.06 这是官方推荐的
etcd 3.3.10
flannel 0.10.0

2、节点规划

IP 角色 安装软件
172.18.8.200 k8s master etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet
172.18.8.201 k8s node01 docker,kubelet,kube-proxy,flannel
172.18.8.202 k8s node02 docker,kubelet,kube-proxy,flannel

节点及网络规划如下:

3、系统配置

关闭防火墙。

systemctl stop firewalld
systemctl disable firewalld

配置/etc/hosts,添加如下内容。

172.18.8.200 master.wzlinux.com master
172.18.8.201 node01.wzlinux.com node01
172.18.8.202 node02.wzlinux.com node02

关闭SELinux。

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0

关闭swap。

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

4、二进制软件包下载

我们可以下载编译好的二进制文件,也可以下载源码自己编译,这里只讨论二进制的安装方式。在Kubernetes的Github CHANGELOG日志中可以看到最新的版本号,也可以到Tag页面中找到自己需要的版本,我下载的是 v1.12.2

上传我们下载的二进制软件包到各节点,并解压在root家目录,查看目录内容。

[root@master ~]# ll kubernetes/server/bin/
total 1821524
-rwxr-xr-x 1 root root 60859975 Oct 24 15:49 apiextensions-apiserver
-rwxr-xr-x 1 root root 142923436 Oct 24 15:49 cloud-controller-manager
-rw-r--r-- 1 root root 8 Oct 24 15:44 cloud-controller-manager.docker_tag
-rw-r--r-- 1 root root 144309760 Oct 24 15:44 cloud-controller-manager.tar
-rwxr-xr-x 1 root root 248021112 Oct 24 15:49 hyperkube
-rwxr-xr-x 1 root root 54042644 Oct 24 15:49 kubeadm
-rwxr-xr-x 1 root root 192781649 Oct 24 15:49 kube-apiserver
-rw-r--r-- 1 root root 8 Oct 24 15:44 kube-apiserver.docker_tag
-rw-r--r-- 1 root root 194167808 Oct 24 15:44 kube-apiserver.tar
-rwxr-xr-x 1 root root 162961401 Oct 24 15:49 kube-controller-manager
-rw-r--r-- 1 root root 8 Oct 24 15:44 kube-controller-manager.docker_tag
-rw-r--r-- 1 root root 164347392 Oct 24 15:44 kube-controller-manager.tar
-rwxr-xr-x 1 root root 57352138 Oct 24 15:49 kubectl
-rwxr-xr-x 1 root root 176648680 Oct 24 15:49 kubelet
-rwxr-xr-x 1 root root 50330867 Oct 24 15:49 kube-proxy
-rw-r--r-- 1 root root 8 Oct 24 15:44 kube-proxy.docker_tag
-rw-r--r-- 1 root root 98355200 Oct 24 15:44 kube-proxy.tar
-rwxr-xr-x 1 root root 57184656 Oct 24 15:49 kube-scheduler
-rw-r--r-- 1 root root 8 Oct 24 15:44 kube-scheduler.docker_tag
-rw-r--r-- 1 root root 58570752 Oct 24 15:44 kube-scheduler.tar
-rwxr-xr-x 1 root root 2330265 Oct 24 15:49 mounter

这些包都是存储在google的服务器上面,因为众所周知的原因,我们是无法访问的,所以需要各位科学上网才可以获取,不过我可以把我获取的包传到网盘分享给大家。

大家可以去下载使用。链接: https://pan.baidu.com/s/1Ut9VERgm55B4lmz0wjjzFQ 提取码: mjem

三、安装master

master节点需要安装的服务有kube-apiserverkube-controller-managerkube-scheduler,所以我们先把需要的二进制文件放到环境变量。

cd /root/kubernetes/server/bin
cp kube-apiserver kube-controller-manager kube-scheduler kubectl /usr/local/bin/

创建需要的目录。

mkdir -p /var/lib/etcd
mkdir -p /etc/etcd/
mkdir /etc/kubernetes

1、安装etcd

因为所以的组件都是需要etcd存储,所以我们第一安装的就是etcd,如果不是为了新版本,为了方便可以使用yum安装。

我这里采用二进制安装方法,首先下载安装包。

下载。

wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz

解压安装。

tar xf etcd-v3.3.10-linux-amd64.tar.gz
cd etcd-v3.3.10-linux-amd64
cp etcd etcdctl /usr/local/bin/

创建system启动文件etcd.service

cat <<EOF > /usr/lib/systemd/system/etcd.service
[Unit]
Description=etcd.service [Service]
Type=notify
TimeoutStartSec=0
Restart=always
WorkingDirectory=/var/lib/etcd
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd [Install]
WantedBy=multi-user.target
EOF

创建配置文件。

cat <<EOF >/etc/etcd/etcd.conf
ETCD_NAME=ETCD Server
ETCD_DATA_DIR="/var/lib/etcd/"
ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
ETCD_ADVERTISE_CLIENT_URLS="http://172.18.8.200:2379"
EOF

启动etcd。

systemctl daemon-reload
systemctl start etcd.service
systemctl enable etcd.service

查看启动状态。

[root@master ~]# netstat -tlnp|grep etcd
tcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN 1550/etcd
tcp6 0 0 :::2379 :::* LISTEN 1550/etcd
[root@master ~]# etcdctl cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://172.18.8.200:2379
cluster is healthy

说明: etcd 会启用两个端口,其中2380 是集群的通信端口,2379是服务端口。如果是配置etcd集群,则要修改配置文件,设置监听IP和端口。

2、安装 kube-apiserver

创建启动文件/usr/lib/systemd/system/kube-apiserver.service,修改为如下内容:

[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
After=etcd.service [Service]
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/local/bin/kube-apiserver \
$KUBE_ETCD_SERVERS \
$KUBE_BIND_ADDRESS \
$KUBE_API_PORT \
$KUBE_SERVICE_ADDRESSES \
$KUBE_ADMISSION_CONTROL \
$KUBE_API_ARGS
Restart=on-failure
Type=notify
LimitNOFILE=65536 [Install]
WantedBy=multi-user.target

创建目录和配置文件。

cat <<EOF > /etc/kubernetes/apiserver
KUBE_BIND_ADDRESS="--bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://172.18.8.200:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.96.0.0/12"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
EOF

启动服务。

systemctl daemon-reload
systemctl start kube-apiserver.service
systemctl enable kube-apiserver.service

查看启动是否成功。

[root@master ~]# netstat -tnlp | grep kube
tcp6 0 0 :::6443 :::* LISTEN 11086/kube-apiserve
tcp6 0 0 :::8080 :::* LISTEN 11086/kube-apiserve

kube-apiserver监听在两个端口,6443是https加密通信方式,8080是http的通信方式,我们这里没有配置证书选项,所以我们的通信都是明文通信,官方文档查看

3、安装kube-controller-manager

创建启动文件/usr/lib/systemd/system/kube-controller-manager.service,添加如下内容:

[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service [Service]
EnvironmentFile=-/etc/kubernetes/controller-manager
ExecStart=/usr/local/bin/kube-controller-manager \
$KUBE_MASTER \
$KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=65536 [Install]
WantedBy=multi-user.target

创建配置文件controller-manager,IP根据自己的实际情况进行修改。

cat <<EOF > /etc/kubernetes/controller-manager
KUBE_MASTER="--master=http://172.18.8.200:8080"
KUBE_CONTROLLER_MANAGER_ARGS=""
EOF

启动服务。

systemctl daemon-reload
systemctl start kube-controller-manager.service
systemctl enable kube-controller-manager.service

验证服务状态。

[root@master ~]# netstat -lntp | grep kube-controll
tcp6 0 0 :::10252 :::* LISTEN 11131/kube-controll
tcp6 0 0 :::10257 :::* LISTEN 11131/kube-controll

端口10257为https提供身份验证和授权,10252为默认非加密端口,官方文档查看

4、安装kube-scheduler

创建启动文件/usr/lib/systemd/system/kube-scheduler.service,添加如下内容:

[Unit]
Description=Kubernetes Scheduler Plugin
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service [Service]
EnvironmentFile=/etc/kubernetes/scheduler
ExecStart=/usr/local/bin/kube-scheduler \
$KUBE_MASTER \
$KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536 [Install]
WantedBy=multi-user.target

创建配置文件/etc/kubernetes/scheduler

cat <<EOF > /etc/kubernetes/scheduler
KUBE_MASTER="--master=http://172.18.8.200:8080"
KUBE_SCHEDULER_ARGS=""
EOF

启动服务。

systemctl daemon-reload
systemctl start kube-scheduler.service
systemctl enable kube-scheduler.service

验证服务状态。

[root@master ~]# netstat -lntp | grep kube-schedule
tcp6 0 0 :::10251 :::* LISTEN 11178/kube-schedule

端口10251是非加密端口,https端口为10259。官方文件查看

使用 kubectl 查看状态。

[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
etcd-0 Healthy {"health":"true"}
controller-manager Healthy ok
scheduler Healthy ok

四、安装node节点(node01为例)

1、环境准备

node节点需要安装的服务有dockerkubeletkube-proxflannel,所以我们先把需要的二进制文件放到环境变量。

cd /root/kubernetes/server/bin/
cp kubelet kube-proxy /usr/local/bin/

加载ipvs内核,使node节点kube-proxy支持ipvs代理规则。

modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh

创建需要的目录。

mkdir /var/lib/kubelet
mkdir /etc/kubernetes

配置转发参数。

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

2、安装docker-ce

我们使用推荐的版本18.06,此时docker官方的最新版本为18.09,所以我们需要配置官方yum源。

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
yum list docker-ce.x86_64  --showduplicates |sort -r
yum install docker-ce-18.06.1.ce -y

配置加速器。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hdi5v8p1.mirror.aliyuncs.com"]
}
EOF

2、安装 kube-proxy 服务

创建启动文件/usr/lib/systemd/system/kube-proxy.service,添加如下内容:

[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target [Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/usr/local/bin/kube-proxy \
$KUBE_MASTER \
$KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65536 [Install]
WantedBy=multi-user.target

创建需要的配置文件,IP请根据自己的实际情况进行修改。

cat <<EOF > /etc/kubernetes/proxy
KUBE_MASTER="--master=http://172.18.8.200:8080"
KUBE_PROXY_ARGS=""
EOF

启动服务。

systemctl daemon-reload
systemctl start kube-proxy.service
systemctl enable kube-proxy.service

查看启动状态。

[root@node01 ~]# netstat -lntp | grep kube-proxy
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 12273/kube-proxy
tcp6 0 0 :::10256 :::* LISTEN 12273/kube-proxy

端口10256负责健康检查,10249负责和server通信,官方文档查看

3、安装 kubelete 服务

创建启动文件/usr/lib/systemd/system/kubelet.service,新增如下内容:

[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service [Service]
WorkingDirectory=/var/lib/kubelet
ExecStart=/usr/local/bin/kubelet --kubeconfig=/etc/kubernetes/kubeconfig.yaml
Restart=on-failure [Install]
WantedBy=multi-user.target

创建配置文件kubeconfig.yaml,具体参数请根据自己的需求进行修改,新增如下内容:

cat <<EOF > /etc/kubernetes/kubeconfig.yaml
apiVersion: v1
kind: Config users:
- name: kubelet clusters:
- name: kubernetes
cluster:
server: http://172.18.8.200:8080 contexts:
- context:
cluster: kubernetes
user: kubelet
name: service-account-context
current-context: service-account-context
EOF

kubeconfig官方文档请点击查看

启动kubelet。

systemctl daemon-reload
systemctl start kubelet.service
systemctl enable kubelet.service

查看启动情况。

[root@node01 ~]# netstat -tnlp | grep kubelet
tcp 0 0 127.0.0.1:43228 0.0.0.0:* LISTEN 12658/kubelet
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 12658/kubelet
tcp6 0 0 :::10250 :::* LISTEN 12658/kubelet
tcp6 0 0 :::10255 :::* LISTEN 12658/kubelet

配置官方文档请查看

4、配置flannel网络(Pod使用)

我们之所以要单独使用第三方的网络插件来扩展k8s,主要原因是在使用docker的环境中,在每个node节点的docker0默认的网段都是172.17.0.0/16的网络。如果要实现不同宿主node上pod(这里也可以理解为容器)互相通信,就不能使用默认的docker0提供的网段,我们需要部署一个覆盖网络,让每个node节点的docker0网络都处于不同的网段,这样,通过添加一些路由转发策略,就能让集群中各个pod在同一个虚拟的网络中实现通信。

从github官网下载最新版本。

wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz
tar xf flannel-v0.10.0-linux-amd64.tar.gz
cp flanneld /usr/local/bin/
cp mk-docker-opts.sh /usr/local/libexec/

创建启动文件/usr/lib/systemd/system/flanneld.service,新增如下内容:

[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service [Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/local/bin/flanneld \
$FLANNEL_ETCD_ENDPOINTS \
$FLANNEL_ETCD_PREFIX \
$FLANNEL_OPTIONS
ExecStartPost=/usr/local/libexec/mk-docker-opts.sh -d /run/flannel/docker
Restart=on-failure [Install]
WantedBy=multi-user.target
RequiredBy=docker.service

对上面的文件做一下解释:

  • Flannel网络必须在宿主机网络能对外(其它node节点)正常通信的情况下启动才有意义,所以这里定义After=network.target
  • 只有当Flannel 网络启动之后,才能创建一个与其它节点不会冲突的网络,而docker的网络需要和fannel 网络相同才能保证跨主机通信,所以docker必须要在flannel网络创建后才能启动,这里定义Before=docker.service

创建配置文件/etc/sysconfig/flanneld,设置为如下内容:

cat <<EOF > /etc/sysconfig/flanneld
# Flanneld configuration options # etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="-etcd-endpoints=http://172.18.8.200:2379" # etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="-etcd-prefix=/atomic.io/network" # Any additional options that you want to pass
FLANNEL_OPTIONS=""
EOF

在master节点上为 falnnel 创建分配的网络。

[root@master ~]#  etcdctl mk /atomic.io/network/config '{"Network": "10.244.0.0/16"}'

在各node节点上启动 flannel。

systemctl daemon-reload
systemctl start flanneld.service
systemctl enable flanneld.service

检查是否启动好。

ps -ef |grep flanneld

也可以使用自助安装,官方建议的使用方法。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

5、启动docker

编辑文件/usr/lib/systemd/system/docker.service,修改为如下内容,让docker使用flannel网络。

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service flannel.service
Wants=network-online.target
Requires=flanneld.service [Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
ExecStart=/usr/bin/dockerd $DOCKER_OPTS
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s [Install]
WantedBy=multi-user.target

我们最后启动docker服务。

systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service

我们可以看到docker0已经连接到flannel0,并且添加10.244.71.0/24的路由。

[root@node01 ~]# ip r
default via 172.18.8.1 dev ens33 proto static metric 100
10.244.0.0/16 dev flannel0 proto kernel scope link src 10.244.71.0
10.244.71.0/24 dev docker0 proto kernel scope link src 10.244.71.1
172.18.0.0/16 dev ens33 proto kernel scope link src 172.18.8.201 metric 100

五、master节点验证

[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node01.wzlinux.com Ready <none> 5m38s v1.12.2
node02.wzlinux.com Ready <none> 5m34s v1.12.2

先运行几个pod看一下。

kubectl run nginx --image=nginx --replicas=3

查看一下pod状态,发现容器的状态为ContainerCreating,使用kubectl describe pod POD_NAME发现在请求k8s.gcr.io/pause:3.1pod镜像模板。

因为我们还没有pod基础设施镜像k8s.gcr.io/pause:3.1,就是所有pod的模板,我们需要从gcr.io下载,但是这个地址我们国内是无法访问的,我们可以使用间接的方法,在所有的node节点上,我们可以从阿里云的镜像下载,然后再tag成我们需要的镜像。

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1

问题解决之后我们再次查看。

[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-dbddb74b8-gzd6j 1/1 Running 0 2m11s 10.244.50.3 node02.wzlinux.com <none>
nginx-dbddb74b8-hmmll 1/1 Running 0 2m11s 10.244.50.2 node02.wzlinux.com <none>
nginx-dbddb74b8-lpkln 1/1 Running 0 2m11s 10.244.71.2 node01.wzlinux.com <none>

当前的网络结构图如下所示:

我们可以创建一个service,查看其分配的IP。

[root@master ~]# kubectl expose deploy nginx --port=8888 --target-port=80

[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 51m
nginx ClusterIP 10.98.190.189 <none> 8888/TCP 7s

至此,使用二进制程序搭建的过程我们已经介绍完了。

CentOS7.5 使用二进制程序部署Kubernetes1.12.2(三)的更多相关文章

  1. CentOS 7.5二进制部署Kubernetes1.12(加密通信)(五)

    一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...

  2. CentOS7.5 使用 kubeadm 安装配置 Kubernetes1.12(四)

    在之前的文章,我们已经演示了yum 和二进制方式的安装方式,本文我们将用官方推荐的kubeadm来进行安装部署. kubeadm是 Kubernetes 官方提供的用于快速安装Kubernetes集群 ...

  3. 最新二进制安装部署kubernetes1.15.6集群---超详细教程

    00.组件版本和配置策略 00-01.组件版本 Kubernetes 1.15.6 Docker docker-ce-18.06.1.ce-3.el7 Etcd v3.3.13 Flanneld v0 ...

  4. kubeadm部署kubernetes-1.12.0 HA集群-ipvs

    一.概述 主要介绍搭建流程及使用注意事项,如果线上使用的话,请务必做好相关测试及压测. 1.基础环境准备 系统:ubuntu TLS 16.04  5台 docker-ce:17.06.2 kubea ...

  5. 微信小程序——部署云函数【三】

    部署login云函数 不部署的话,点击获取openid会报错,报错如下 解决方案呢,很明显的已经告诉我们了 搭建云环境 开通 同意协议 新建环境 每个小程序账号可以创建两个免费环境 确定 部署后再次请 ...

  6. 来了,老弟!__二进制部署kubernetes1.11.7集群

    Kubernetes容器集群管理 Kubernetes介绍 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S.K8S是Go ...

  7. 03 . 二进制部署kubernetes1.18.4

    简介 目前生产部署kubernetes集群主要两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群 ...

  8. [转帖]Breeze部署kubernetes1.13.2高可用集群

    Breeze部署kubernetes1.13.2高可用集群 2019年07月23日 10:51:41 willblog 阅读数 673 标签: kubernetes 更多 个人分类: kubernet ...

  9. Docker scratch 无法正常运行golang二进制程序的问题

    使用Docker构建容器能够极大的降低运维成本,提高部署效率,同时非常方便对服务的平行扩展.然而在构建容器镜像过程中的,存在着一个难以避免的问题,就是如果使用常见的发行版本作为程序运行的基础环境,那么 ...

随机推荐

  1. Swagger 学习资料

    Swagger 学习资料 网址 Spring Boot中使用Swagger2构建强大的RESTful API文档 http://blog.didispace.com/springbootswagger ...

  2. 转载 Easyui Tree方法扩展 - getLevel(获取节点级别)

    Easyui Tree一直就没有提供这个方法,以前没有用到,所 以一直没怎么在意,这次自己用到了,顺便扩展了一个方法,分享给大家. $.extend($.fn.tree.methods, { getL ...

  3. MySQL 多行数据合并 GROUP_CONCAT

    表结构及数据 DROP TABLE IF EXISTS `course`;CREATE TABLE `course` ( `name` varchar(255) CHARACTER SET utf8 ...

  4. Dockerfile 常见指令的意义/常见的使用方式/使用示例/

    一.什么是 Dockerfile ? Dockerfile 就是生成docker镜像的指令集, 通过使用docker工具执行这些指令集可以方便快捷地生成镜像, 并且能不断复用 Dockerfile 指 ...

  5. Java-Eclipse-findbugs-sonar学习

    一.findbugs 和sonar的安装 可以通过Eclipse的Help-Eclipse marketplace中安装. 推荐:findbugs安装Help-install new Software ...

  6. 伯克利套接字(BSD Socket)

    http://blog.csdn.net/blueman2012/article/details/6693605#socket.28.29 伯克利套接字(Berkeley sockets),也称为BS ...

  7. log4j2 配置文件解读

    1.日志相关介绍 日志接口(slf4j):slf4j是对所有日志框架制定的一种规范.标准.接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用,比如log4j.l ...

  8. C# 按行读取文件 从某行开始取

    ; FileStream fs = new FileStream(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); u ...

  9. Navicat连接oracle,出现Only compatible with oci version 8.1

    与本地oracle连接的时候,一般没问题,sqlplus和oci都是本地oracle自带的,(设置: 工具->选项->oci) 分别为:     oci:D:\app\pcman\prod ...

  10. 16-网页,网站,微信公众号基础入门(网页版MQTT,页面控件位置调整入门)

    https://www.cnblogs.com/yangfengwu/p/11200767.html 说一下,只要你java学的很好,那么几乎所有的语言都不在话下了 来看一下样式设置 运行 在左上角感 ...