一、安装方式介绍

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、系统配置

关闭防火墙。

  1. systemctl stop firewalld
  2. systemctl disable firewalld

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

  1. 172.18.8.200 master.wzlinux.com master
  2. 172.18.8.201 node01.wzlinux.com node01
  3. 172.18.8.202 node02.wzlinux.com node02

关闭SELinux。

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

关闭swap。

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

4、二进制软件包下载

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

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

  1. [root@master ~]# ll kubernetes/server/bin/
  2. total 1821524
  3. -rwxr-xr-x 1 root root 60859975 Oct 24 15:49 apiextensions-apiserver
  4. -rwxr-xr-x 1 root root 142923436 Oct 24 15:49 cloud-controller-manager
  5. -rw-r--r-- 1 root root 8 Oct 24 15:44 cloud-controller-manager.docker_tag
  6. -rw-r--r-- 1 root root 144309760 Oct 24 15:44 cloud-controller-manager.tar
  7. -rwxr-xr-x 1 root root 248021112 Oct 24 15:49 hyperkube
  8. -rwxr-xr-x 1 root root 54042644 Oct 24 15:49 kubeadm
  9. -rwxr-xr-x 1 root root 192781649 Oct 24 15:49 kube-apiserver
  10. -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-apiserver.docker_tag
  11. -rw-r--r-- 1 root root 194167808 Oct 24 15:44 kube-apiserver.tar
  12. -rwxr-xr-x 1 root root 162961401 Oct 24 15:49 kube-controller-manager
  13. -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-controller-manager.docker_tag
  14. -rw-r--r-- 1 root root 164347392 Oct 24 15:44 kube-controller-manager.tar
  15. -rwxr-xr-x 1 root root 57352138 Oct 24 15:49 kubectl
  16. -rwxr-xr-x 1 root root 176648680 Oct 24 15:49 kubelet
  17. -rwxr-xr-x 1 root root 50330867 Oct 24 15:49 kube-proxy
  18. -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-proxy.docker_tag
  19. -rw-r--r-- 1 root root 98355200 Oct 24 15:44 kube-proxy.tar
  20. -rwxr-xr-x 1 root root 57184656 Oct 24 15:49 kube-scheduler
  21. -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-scheduler.docker_tag
  22. -rw-r--r-- 1 root root 58570752 Oct 24 15:44 kube-scheduler.tar
  23. -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,所以我们先把需要的二进制文件放到环境变量。

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

创建需要的目录。

  1. mkdir -p /var/lib/etcd
  2. mkdir -p /etc/etcd/
  3. mkdir /etc/kubernetes

1、安装etcd

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

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

下载。

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

解压安装。

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

创建system启动文件etcd.service

  1. cat <<EOF > /usr/lib/systemd/system/etcd.service
  2. [Unit]
  3. Description=etcd.service
  4. [Service]
  5. Type=notify
  6. TimeoutStartSec=0
  7. Restart=always
  8. WorkingDirectory=/var/lib/etcd
  9. EnvironmentFile=-/etc/etcd/etcd.conf
  10. ExecStart=/usr/local/bin/etcd
  11. [Install]
  12. WantedBy=multi-user.target
  13. EOF

创建配置文件。

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

启动etcd。

  1. systemctl daemon-reload
  2. systemctl start etcd.service
  3. systemctl enable etcd.service

查看启动状态。

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

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

2、安装 kube-apiserver

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

  1. [Unit]
  2. Description=Kubernetes API Server
  3. Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  4. After=network.target
  5. After=etcd.service
  6. [Service]
  7. EnvironmentFile=/etc/kubernetes/apiserver
  8. ExecStart=/usr/local/bin/kube-apiserver \
  9. $KUBE_ETCD_SERVERS \
  10. $KUBE_BIND_ADDRESS \
  11. $KUBE_API_PORT \
  12. $KUBE_SERVICE_ADDRESSES \
  13. $KUBE_ADMISSION_CONTROL \
  14. $KUBE_API_ARGS
  15. Restart=on-failure
  16. Type=notify
  17. LimitNOFILE=65536
  18. [Install]
  19. WantedBy=multi-user.target

创建目录和配置文件。

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

启动服务。

  1. systemctl daemon-reload
  2. systemctl start kube-apiserver.service
  3. systemctl enable kube-apiserver.service

查看启动是否成功。

  1. [root@master ~]# netstat -tnlp | grep kube
  2. tcp6 0 0 :::6443 :::* LISTEN 11086/kube-apiserve
  3. 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,添加如下内容:

  1. [Unit]
  2. Description=Kubernetes Controller Manager
  3. Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  4. After=kube-apiserver.service
  5. Requires=kube-apiserver.service
  6. [Service]
  7. EnvironmentFile=-/etc/kubernetes/controller-manager
  8. ExecStart=/usr/local/bin/kube-controller-manager \
  9. $KUBE_MASTER \
  10. $KUBE_CONTROLLER_MANAGER_ARGS
  11. Restart=on-failure
  12. LimitNOFILE=65536
  13. [Install]
  14. WantedBy=multi-user.target

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

  1. cat <<EOF > /etc/kubernetes/controller-manager
  2. KUBE_MASTER="--master=http://172.18.8.200:8080"
  3. KUBE_CONTROLLER_MANAGER_ARGS=""
  4. EOF

启动服务。

  1. systemctl daemon-reload
  2. systemctl start kube-controller-manager.service
  3. systemctl enable kube-controller-manager.service

验证服务状态。

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

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

4、安装kube-scheduler

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

  1. [Unit]
  2. Description=Kubernetes Scheduler Plugin
  3. Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  4. After=kube-apiserver.service
  5. Requires=kube-apiserver.service
  6. [Service]
  7. EnvironmentFile=/etc/kubernetes/scheduler
  8. ExecStart=/usr/local/bin/kube-scheduler \
  9. $KUBE_MASTER \
  10. $KUBE_SCHEDULER_ARGS
  11. Restart=on-failure
  12. LimitNOFILE=65536
  13. [Install]
  14. WantedBy=multi-user.target

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

  1. cat <<EOF > /etc/kubernetes/scheduler
  2. KUBE_MASTER="--master=http://172.18.8.200:8080"
  3. KUBE_SCHEDULER_ARGS=""
  4. EOF

启动服务。

  1. systemctl daemon-reload
  2. systemctl start kube-scheduler.service
  3. systemctl enable kube-scheduler.service

验证服务状态。

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

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

使用 kubectl 查看状态。

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

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

1、环境准备

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

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

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

  1. modprobe ip_vs_rr
  2. modprobe ip_vs_wrr
  3. modprobe ip_vs_sh

创建需要的目录。

  1. mkdir /var/lib/kubelet
  2. mkdir /etc/kubernetes

配置转发参数。

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

2、安装docker-ce

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

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

配置加速器。

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

2、安装 kube-proxy 服务

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

  1. [Unit]
  2. Description=Kubernetes Kube-Proxy Server
  3. Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  4. After=network.target
  5. [Service]
  6. EnvironmentFile=/etc/kubernetes/proxy
  7. ExecStart=/usr/local/bin/kube-proxy \
  8. $KUBE_MASTER \
  9. $KUBE_PROXY_ARGS
  10. Restart=on-failure
  11. LimitNOFILE=65536
  12. [Install]
  13. WantedBy=multi-user.target

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

  1. cat <<EOF > /etc/kubernetes/proxy
  2. KUBE_MASTER="--master=http://172.18.8.200:8080"
  3. KUBE_PROXY_ARGS=""
  4. EOF

启动服务。

  1. systemctl daemon-reload
  2. systemctl start kube-proxy.service
  3. systemctl enable kube-proxy.service

查看启动状态。

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

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

3、安装 kubelete 服务

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

  1. [Unit]
  2. Description=Kubernetes Kubelet Server
  3. Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  4. After=docker.service
  5. Requires=docker.service
  6. [Service]
  7. WorkingDirectory=/var/lib/kubelet
  8. ExecStart=/usr/local/bin/kubelet --kubeconfig=/etc/kubernetes/kubeconfig.yaml
  9. Restart=on-failure
  10. [Install]
  11. WantedBy=multi-user.target

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

  1. cat <<EOF > /etc/kubernetes/kubeconfig.yaml
  2. apiVersion: v1
  3. kind: Config
  4. users:
  5. - name: kubelet
  6. clusters:
  7. - name: kubernetes
  8. cluster:
  9. server: http://172.18.8.200:8080
  10. contexts:
  11. - context:
  12. cluster: kubernetes
  13. user: kubelet
  14. name: service-account-context
  15. current-context: service-account-context
  16. EOF

kubeconfig官方文档请点击查看

启动kubelet。

  1. systemctl daemon-reload
  2. systemctl start kubelet.service
  3. systemctl enable kubelet.service

查看启动情况。

  1. [root@node01 ~]# netstat -tnlp | grep kubelet
  2. tcp 0 0 127.0.0.1:43228 0.0.0.0:* LISTEN 12658/kubelet
  3. tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 12658/kubelet
  4. tcp6 0 0 :::10250 :::* LISTEN 12658/kubelet
  5. 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官网下载最新版本。

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

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

  1. [Unit]
  2. Description=Flanneld overlay address etcd agent
  3. After=network.target
  4. After=network-online.target
  5. Wants=network-online.target
  6. After=etcd.service
  7. Before=docker.service
  8. [Service]
  9. Type=notify
  10. EnvironmentFile=/etc/sysconfig/flanneld
  11. EnvironmentFile=-/etc/sysconfig/docker-network
  12. ExecStart=/usr/local/bin/flanneld \
  13. $FLANNEL_ETCD_ENDPOINTS \
  14. $FLANNEL_ETCD_PREFIX \
  15. $FLANNEL_OPTIONS
  16. ExecStartPost=/usr/local/libexec/mk-docker-opts.sh -d /run/flannel/docker
  17. Restart=on-failure
  18. [Install]
  19. WantedBy=multi-user.target
  20. RequiredBy=docker.service

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

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

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

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

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

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

在各node节点上启动 flannel。

  1. systemctl daemon-reload
  2. systemctl start flanneld.service
  3. systemctl enable flanneld.service

检查是否启动好。

  1. 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网络。

  1. [Unit]
  2. Description=Docker Application Container Engine
  3. Documentation=https://docs.docker.com
  4. After=network-online.target firewalld.service flannel.service
  5. Wants=network-online.target
  6. Requires=flanneld.service
  7. [Service]
  8. Type=notify
  9. EnvironmentFile=-/run/flannel/docker
  10. ExecStart=/usr/bin/dockerd $DOCKER_OPTS
  11. ExecReload=/bin/kill -s HUP $MAINPID
  12. LimitNOFILE=infinity
  13. LimitNPROC=infinity
  14. LimitCORE=infinity
  15. TimeoutStartSec=0
  16. Delegate=yes
  17. KillMode=process
  18. Restart=on-failure
  19. StartLimitBurst=3
  20. StartLimitInterval=60s
  21. [Install]
  22. WantedBy=multi-user.target

我们最后启动docker服务。

  1. systemctl daemon-reload
  2. systemctl restart docker.service
  3. systemctl enable docker.service

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

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

五、master节点验证

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

先运行几个pod看一下。

  1. 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成我们需要的镜像。

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

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

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

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

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

  1. [root@master ~]# kubectl expose deploy nginx --port=8888 --target-port=80
  2. [root@master ~]# kubectl get svc
  3. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  4. kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 51m
  5. 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. 如何升级pip3

    使用pip3安装软件的时候提示要升级pip3“You are using pip version 10.0.1, however version 18.0 is available.You shoul ...

  2. vue 命名路由

    有时候,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候.你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称. const ro ...

  3. Servlet/Tomcat/ Spring 之间的关系

    0.基础知识 在idea中打开servlet的源码: 可以看见servlet就是一个接口:接口就是规定了一些规范,使得一些具有某些共性的类都能实现这个接口,从而都遵循某些规范. 有的人往往以为就是se ...

  4. Oracle执行过程中出现的问题

    ORA-02292: 违反完整约束条件 (用户名.约束名) - 已找到子记录 造成原因:删除该表时,有依赖该表的子表数据,需要删除该条记录或者禁用约束. 查看约束所在的表:select * from ...

  5. 洛谷 P4158 [SCOI2009]粉刷匠 题解

    每日一题 day59 打卡 Analysis 很容易看出是一个dp, dp[i][j[k][0/1]来表示到了(i,j)时,刷了k次,0表示这个没刷,1表示刷了. 于是有转移: 1.换行时一定要重新刷 ...

  6. linux命令之------Mv命令

    Mv命令 1)作用:用来为文件或目录改名/或将文件或目录一如其他位置 2)-i:若指定目录已有同名文件,则先询问是否覆盖旧文件: 3)-f:在mv操作要覆盖某已有的目标文件时,不给任何指示: 4)案例 ...

  7. Linux下的零拷贝

    Reference:  https://segmentfault.com/a/1190000011989008 零拷贝是什么? 维基百科对“零拷贝”是这样描述的: "Zero-copy&qu ...

  8. SpringCloud:Feign模块引用版本问题

    1.问题报错 org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import cand ...

  9. SQL Mode

    SQL Mode简介 在MySQL中,SQL Mode常常用来解决以下问题: 1.通过设置SQL Mode,可以完成不同严格程度的数据校验,有效保证数据准确性. 2.通过设置SQL Mode为ANSI ...

  10. putty WinScp 免密登录远程 Linux

    该方法的原理是预先生成一对公钥和私钥,私钥以文件的形式保存在本地,公钥保存在远程机器上.这样每次登录只需指定私钥文件,远程机器通过比对公钥和私钥来验证登录的合法性. Putty 免密登录 第一步 生成 ...