Kubernetes 安装与配置补充

标签(空格分隔): kubernetes系列


  • 一:kubernetes的介绍
  • 二:kubernetes的安装配置
  • 三:kubernetes 的 WEB UI

一:kubernetes的介绍

1.1、Kubernetes是什么

Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。 

K8S用于容器化应用程序的部署,扩展和管理。 

K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能。

Kubernetes目标是让部署容器化应用简单高效。

官方网站:http://www.kubernetes.io

1.2、Kubernetes特性

1、自我修复
在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。

2、 弹性伸缩
使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。  自动部署和回滚
K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务。 

3、服务发现和负载均衡
K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。

4、 机密和配置管理
管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。

5、存储编排
挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如NFS、GlusterFS、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。 
6、 批处理

提供一次性任务,定时任务;满足批量数据处理和分析的场景。

1.3 Kubernetes集群架构与组件

kubernetes 安装kuboard kubernetes 安装推荐_json

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_02

Master组件

kube-apiserverKubernetes API,
集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。

 kube-controller-manager处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。

  kube-scheduler根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。

  etcd分布式键值存储系统。用于保存集群状态数据,比如Pod、Service等对象信息。

  Node组件 

  kubelet kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。

 kube-proxy
在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。

 docker或rocket容器引擎,运行容器。

kubernetes 安装kuboard kubernetes 安装推荐_IP_03

kubernetes 安装kuboard kubernetes 安装推荐_Pod_04

1. Pod• 

最小部署单元
• 一组容器的集合
• 一个Pod中的容器共享网络命名空间
• Pod是短暂的

2. Controllers

• ReplicaSet : 确保预期的Pod副本数量
• Deployment : 无状态应用部署
• StatefulSet : 有状态应用部署
• DaemonSet : 确保所有Node运行同一个Pod
• Job : 一次性任务
• Cronjob : 定时任务更高级层次对象,部署和管理Pod

3. Service

• 防止Pod失联
• 定义一组Pod的访问策略

4. Label : 标签,附加到某个资源上,用于关联对象、查询和筛选

5. Namespaces : 命名空间,将对象逻辑上隔离

6. Annotations :注释

二: kubernetes 高可用集群环境部署

2.1 官方提供的三种部署方式

1. minikube
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于尝试Kubernetes或日常开发的用户使用。部署地址:https://kubernetes.io/docs/setup/minikube/

2. kubeadm
Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

3.二进制包推荐,从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。下载地址:https://github.com/kubernetes/kubernetes/releases

2.2 采用二进制包部署

2.2.1 软件与版本

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_05

2.2.2 IP地址 与角色规划

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_06

2.2.3 单节点master

kubernetes 安装kuboard kubernetes 安装推荐_json_07

2.2.4 多节点master

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_08

2.3 首先部署单master节点

2.3.1 自签SSL证书

kubernetes 安装kuboard kubernetes 安装推荐_Pod_09

mkdir /k8s/{k8s-cert,etcd-cert} -p

cd /Deploy

cp -p etcd-cert.sh /k8s/etcd-cert
cd /k8s/etcd-cert

chmod +x etcd-cert.sh
----
etcd-cert.sh 脚本内容

cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "www": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF

cat > ca-csr.json <<EOF
{
    "CN": "etcd CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

#-----------------------

cat > server-csr.json <<EOF
{
    "CN": "etcd",
    "hosts": [
    "192.168.100.11",
    "192.168.100.12",
    "192.168.100.13",
    "192.168.100.14",
    "192.168.100.15",
    "192.168.100.16",
    "192.168.100.17",
    "192.168.100.18",
    "192.168.100.60"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "BeiJing",
            "ST": "BeiJing"
        }
    ]
}
EOF

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server

----

kubernetes 安装kuboard kubernetes 安装推荐_运维_10

cfsssl 命令支持

cd /root/Deploy

cp -p cfssl.sh /k8s/etcd-cert

cd /k8s/etcd-cert

chmod +x cfssl.sh
./cfssl.sh
./etcd-cert.sh
----
cfssl.sh 脚本内容

curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
chmod +x /usr/local/bin/cfssl /usr/local/bin/cfssljson /usr/local/bin/cfssl-certinfo
----

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_11

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_12

kubernetes 安装kuboard kubernetes 安装推荐_Pod_13

2.3.2 配置etcd 服务

二进制包下载地址
https://github.com/etcd-io/etcd/releases
cd /root/Soft 

tar -zxvf tar -zxvf etcd-v3.3.10-linux-amd64.tar.gz

cd cd etcd-v3.3.10-linux-amd64/

mkdir -p /opt/etcd/{ssl,bin,cfg} 

mv etcd etcdctl /opt/etcd/bin/

cd /k8s/etcd-cert

cp -p *.pem /opt/etcd/ssl
cp -p *.csr /opt/etcd/ssl

kubernetes 安装kuboard kubernetes 安装推荐_运维_14

kubernetes 安装kuboard kubernetes 安装推荐_Pod_15

kubernetes 安装kuboard kubernetes 安装推荐_Pod_16

kubernetes 安装kuboard kubernetes 安装推荐_json_17

cd /root/Deploy

cp -p etcd.sh /root 

chmod +x etcd.sh 

./etcd.sh etcd01 192.168.100.11 etcd02=https://192.168.100.13:2380,etcd03=https://192.168.100.14:2380

scp -r /opt/etcd 192.168.100.13:/opt/

scp -r /opt/etcd 192.168.100.14:/opt/

scp /usr/lib/systemd/system/etcd.service root@192.168.100.13:/usr/lib/systemd/system/

scp /usr/lib/systemd/system/etcd.service root@192.168.100.14:/usr/lib/systemd/system/

----
etcd.sh 脚本内容

#!/bin/bash
# example: ./etcd.sh etcd01 192.168.100.11 etcd02=https://192.168.100.13:2380,etcd03=https://192.168.100.14:2380

ETCD_NAME=$1
ETCD_IP=$2
ETCD_CLUSTER=$3

WORK_DIR=/opt/etcd

cat <<EOF >$WORK_DIR/cfg/etcd
#[Member]
ETCD_NAME="${ETCD_NAME}"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_LISTEN_CLIENT_URLS="https://${ETCD_IP}:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://${ETCD_IP}:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://${ETCD_IP}:2380,${ETCD_CLUSTER}"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

cat <<EOF >/usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=${WORK_DIR}/cfg/etcd
ExecStart=${WORK_DIR}/bin/etcd \
--name=\${ETCD_NAME} \
--data-dir=\${ETCD_DATA_DIR} \
--listen-peer-urls=\${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=\${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=\${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=\${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=\${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=\${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new \
--cert-file=${WORK_DIR}/ssl/server.pem \
--key-file=${WORK_DIR}/ssl/server-key.pem \
--peer-cert-file=${WORK_DIR}/ssl/server.pem \
--peer-key-file=${WORK_DIR}/ssl/server-key.pem \
--trusted-ca-file=${WORK_DIR}/ssl/ca.pem \
--peer-trusted-ca-file=${WORK_DIR}/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable etcd
systemctl restart etcd
----

kubernetes 安装kuboard kubernetes 安装推荐_Pod_18

kubernetes 安装kuboard kubernetes 安装推荐_IP_19

login : 
192.168.100.11 etcd 的文件
vim /opt/etcd/cfg/etcd
---
#[Member]
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.100.11:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.100.11:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.100.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.100.11:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.100.11:2380,etcd02=https://192.168.100.13:2380,etcd03=https://192.168.100.14:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
~                                
---
login :
192.168.100.13 etcd 文件内容
vim /opt/etcd/cfg/etcd
---
#[Member]
ETCD_NAME="etcd02"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.100.13:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.100.13:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.100.13:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.100.13:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.100.11:2380,etcd02=https://192.168.100.13:2380,etcd03=https://192.168.100.14:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
----
login :
192.168.100.14 etcd 文件内容
vim /opt/etcd/cfg/etcd
----

#[Member]
ETCD_NAME="etcd03"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.100.14:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.100.14:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.100.14:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.100.14:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.100.11:2380,etcd02=https://192.168.100.13:2380,etcd03=https://192.168.100.14:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
----
启动 etcd 服务
service etcd start 
chkconfig etcd on

kubernetes 安装kuboard kubernetes 安装推荐_IP_20

kubernetes 安装kuboard kubernetes 安装推荐_json_21

kubernetes 安装kuboard kubernetes 安装推荐_json_22

验证 etcd集群 

cd /opt/etcd/ssl

/opt/etcd/bin/etcdctl \
--ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem \
--endpoints="https://192.168.100.11:2379,https://192.168.100.13:2379,https://192.168.100.14:2379" \
cluster-health

kubernetes 安装kuboard kubernetes 安装推荐_IP_23

kubernetes 安装kuboard kubernetes 安装推荐_运维_24

2.4 Node安装Docker

kubernetes 安装kuboard kubernetes 安装推荐_Pod_25

在 node节点 安装docker 
192.168.100.13 192.168.100.14 

----
yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

docker 加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://abcd1234.m.daocloud.io

# yum install docker-ce
# systemctl start docker
# systemctl enable docker

---

kubernetes 安装kuboard kubernetes 安装推荐_运维_26

kubernetes 安装kuboard kubernetes 安装推荐_Pod_27

kubernetes 安装kuboard kubernetes 安装推荐_json_28

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_29

kubernetes 安装kuboard kubernetes 安装推荐_IP_30

kubernetes 安装kuboard kubernetes 安装推荐_IP_31

2.5 部署flannel 网络 模型

2.5.1 kubernetes 网络模型(CNI)
Container Network Interface(CNI): 容器网络接口,Google 和 cCoreOS 主导

Kubernetes 网络模型设计要求:
 1. 一个pod 一个IP
 2. 每个pod 独立IP,pod 内所有容器共享网络(同一个IP)
 3. 所有容器都可以与所有其他容器通信
 4. 所有节点都可以与所有容器通信

kubernetes 安装kuboard kubernetes 安装推荐_运维_32

kubernetes 安装kuboard kubernetes 安装推荐_IP_33

2.5.2 flannel的 网络模型

Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来。
VXLAN:将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目
标地址。
Flannel:是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VXLAN、AWS VPC和GCE路由等数据转发方
式。

kubernetes 安装kuboard kubernetes 安装推荐_运维_34

kubernetes 安装kuboard kubernetes 安装推荐_Pod_35

###2.5.3 flannel 安装 与配置

1. 写入分配的子网段到etcd,供flanneld使用

cd /opt/etcd/ssl/

/opt/etcd/bin/etcdctl \
--ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem \
--endpoints="https://192.168.100.11:2379,https://192.168.100.13:2379,https://192.168.100.14:2379" \
set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'

kubernetes 安装kuboard kubernetes 安装推荐_IP_36

2. 下载flannel 软件
    https://github.com/coreos/flannel/releases

    tar -zxvf flannel-v0.10.0-linux-amd64.tar.gz

     mv flanneld /opt/kubernetes/bin/ 

     mv mk-docker-opts.sh /opt/kubernetes/bin/

kubernetes 安装kuboard kubernetes 安装推荐_IP_37

在node节点 上 部署flannel 

mkdir /opt/kubernetes/{bin,cfg,ssl} -p 

cd /root/

./flannel.sh https://192.168.100.11:2379,https://192.168.100.13:2379,https://192.168.100.14:2379

kubernetes 安装kuboard kubernetes 安装推荐_json_38

启动 flannel 与 docker 

service flanneld restart

service docker restart

kubernetes 安装kuboard kubernetes 安装推荐_Pod_39

kubernetes 安装kuboard kubernetes 安装推荐_Pod_40

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_41

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_42

flannel 网络的测试

在192.168.100.13 与 192.168.10.14 上面 创建 临时容器 查看 是不是可以ping 通

安装测试容器
docker run ti bubsybox 

docker run ti busybox

kubernetes 安装kuboard kubernetes 安装推荐_Pod_43

kubernetes 安装kuboard kubernetes 安装推荐_json_44

kubernetes 安装kuboard kubernetes 安装推荐_运维_45

kubernetes 安装kuboard kubernetes 安装推荐_Pod_46


查看路由
/opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.100.11:2379,https://192.168.100.13:2379,https://192.168.100.14:2379" ls /coreos.com/network/

/opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.100.11:2379,https://192.168.100.13:2379,https://192.168.100.14:2379" ls /coreos.com/network/subnets

kubernetes 安装kuboard kubernetes 安装推荐_Pod_47

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_48

2.6 部署k8s 的 Master 部分

2.6.1 下载kubernetes

下载地址:
选择 1.13.4 版本
https://dl.k8s.io/v1.13.4/kubernetes-server-linux-amd64.tar.gz

2.6.2 部署kube-apiserver

tar -zxvf kubernetes-server-linux-amd64.tar.gz

mkdir -p /opt/kubernetes/{bin,cfg,ssl}
cd /root/kubernetes/server/bin

cp -p kube-apiserver kube-controller-manager kube-scheduler /opt/kubernetes/bin/

cd /root/Deploy 
chmod +x apiserver.sh 

 ./apiserver.sh 192.168.100.11 https://192.168.100.11:2379,https://192.168.100.13:2379,https://192.168.100.14:2379

kubernetes 安装kuboard kubernetes 安装推荐_运维_49

kubernetes 安装kuboard kubernetes 安装推荐_json_50

kubernetes 安装kuboard kubernetes 安装推荐_json_51

kubernetes 安装kuboard kubernetes 安装推荐_IP_52

配置k8s 的认证

cd /root/Deploy 

cp -p k8s-cert.sh /opt/kubernetes/ssl

cd /opt/kubernetes/ssl

chmod +x k8s-cert.sh 

./k8s-cert.sh

kubernetes 安装kuboard kubernetes 安装推荐_运维_53

生成token 文件

export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')

cat > token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF

cat token.csv

mv tokcen.csv /opt/kubernetes/cfg/

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_54

kubernetes 安装kuboard kubernetes 安装推荐_json_55

重启动 kube-apiserver 

service kube-apiserver restart 

netstat -nultp |grep 8080
netstat -nultp |grep 6443 

apiserver 问题排查命令

/opt/kubernetes/bin/kube-apiserver $KUBE_APISERVER_OPTS

kubernetes 安装kuboard kubernetes 安装推荐_运维_56

2.6.3 部署controller-manager 与 scheduler

cd /root/Deploy
chmod +x controller-manager.sh 
chmod +x scheduler.sh 

./conroller-manager.sh 127.0.0.1
./scheduler.sh 127.0.0.1

kubernetes 安装kuboard kubernetes 安装推荐_json_57

kubernetes 安装kuboard kubernetes 安装推荐_IP_58

检查集群 的状态

cd /root/kubernetes/server/bin/
cp -p kubectl /usr/bin/
kubectl get cs

kubernetes 安装kuboard kubernetes 安装推荐_IP_59

部署Node组件 所需要的授权

kubernetes 安装kuboard kubernetes 安装推荐_Pod_60

kubectl create clusterrolebinding kubelet-bootstrap \
--clusterrole=system:node-bootstrapper \
--user=kubelet-bootstrap

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_61

cd /root/Deploy
cp -p kubeconfig.sh /root 
cd /root
chmod +x kubeconfig.sh 
./kubeconfig.sh 192.168.100.11 /opt/kubernetes/ssl

生成bootstrap.kubeconfig 与 kube-proxy.kubeconfig 文件

kubernetes 安装kuboard kubernetes 安装推荐_运维_62

kubernetes 安装kuboard kubernetes 安装推荐_json_63


查看证书颁发
kubectl get csr

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_64

kubectl certificate approve node-csr-H38P-yvXaCa5GO7nXNg_2zegNT1BuSr-wCBzBXOPXBc

kubectl certificate approve node-csr-kAJTeC6Biz8ZtNsbFCSoL8AF-DhAFBlocn8xDxzTr1s

kubectl get csr 

kubectl get node

kubernetes 安装kuboard kubernetes 安装推荐_json_65

kubernetes 安装kuboard kubernetes 安装推荐_IP_66

2.7 部署k8s的node部分组件

复制 bootstrap.kubeconfig 与 kube-proxy.kubeconfig 文件到node 上面

scp bootstrap.kubeconfig kube-proxy.kubeconfig 192.168.100.13:/opt/kubernetes/cfg/

scp bootstrap.kubeconfig kube-proxy.kubeconfig 192.168.100.14:/opt/kubernetes/cfg/

cp -p bootstrap.kubeconfig kube-proxy.kubeconfig /opt/kubernetes/cfg/

cd /root/kubernetes/server/bin

scp kubelet root@192.168.100.13:/opt/kubernetes/bin/

scp kubelet root@192.168.100.14:/opt/kubernetes/bin/

kubernetes 安装kuboard kubernetes 安装推荐_json_67

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_68

node 节点 执行
cd /root 
chmod +x kubelet.sh 
./kubelet 192.168.100.13
./kubelet 192.168.100.14

kubernetes 安装kuboard kubernetes 安装推荐_Pod_69

kubernetes 安装kuboard kubernetes 安装推荐_json_70

kubernetes 安装kuboard kubernetes 安装推荐_Pod_71

kube-proxy 部署

scp kube-proxy 192.168.100.13:/opt/kubernetes/bin/
scp kube-proxy 192.168.100.14:/opt/kubernetes/bin/

kubernetes 安装kuboard kubernetes 安装推荐_json_72

kube-proxy 部署设置

登录到node节点

chmod +x proxy.sh 

./proxy.sh 192.168.100.13

./proxy.sh 192.168.100.14

ps -ef |grep proxy

kubernetes 安装kuboard kubernetes 安装推荐_运维_73

kubernetes 安装kuboard kubernetes 安装推荐_Pod_74

运行一个nginx实例测试

# kubectl run nginx --image=nginx --replicas=3
# kubectl get pod
# kubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort
# kubectl get svc nginx

kubernetes 安装kuboard kubernetes 安装推荐_运维_75

kubernetes 安装kuboard kubernetes 安装推荐_运维_76

kubernetes 安装kuboard kubernetes 安装推荐_json_77

kubernetes 安装kuboard kubernetes 安装推荐_json_78

kubernetes 安装kuboard kubernetes 安装推荐_IP_79

kubernetes 安装kuboard kubernetes 安装推荐_IP_80

主节点 无法 查看 日志 

error: You must be logged in to the server (the server has asked for the client to provide credentials ( pods/log nginx-7cdbd8cdc9-z7jpk))

----
解决方法:
  开放kubelet 的 匿名访问权限

vim /opt/kubernetes/kubelet.config 
在最后加上:
authentication:
  anonymous:
    enabled: true
----

service kubelet restart 

kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

kubernetes 安装kuboard kubernetes 安装推荐_Pod_81


kubernetes 安装kuboard kubernetes 安装推荐_开发工具_82


kubernetes 安装kuboard kubernetes 安装推荐_运维_83


kubernetes 安装kuboard kubernetes 安装推荐_json_84


kubernetes 安装kuboard kubernetes 安装推荐_json_85


2.8 部署一个kubernetes UI 界面

下载地址链接:
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard

找到K8S 的 源码包 解压

cd /root/kubernetes/
tar -zxvf kubernetes-src.tar.gz

cd /root/kubernetes/cluster/addons/dashboard/

kubernetes 安装kuboard kubernetes 安装推荐_IP_86

kubectl create -f dashboard-configmap.yaml

kubectl create -f dashboard-rbac.yaml

kubectl create -f dashboard-secret.yaml

kubernetes 安装kuboard kubernetes 安装推荐_IP_87

vim dashboard-controller.yaml
改image:

image: registry.cn-hangzhou.aliyuncs.com/kuberneters/kubernetes-dashboard-amd64:v1.10.1

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_88

kubectl create -f dashboard-controller.yaml

kubernetes 安装kuboard kubernetes 安装推荐_Pod_89

kubectl get pods -n kube-syetem

kubernetes 安装kuboard kubernetes 安装推荐_IP_90

kubectl get pods -n kube-system --all-namespaces

kubernetes 安装kuboard kubernetes 安装推荐_Pod_91

修改: dashboard-service.yaml

vim dashborad-service.yaml 

增加:
  type: NodePort

kubectl create -f dashboard-service.yaml

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_92

kubernetes 安装kuboard kubernetes 安装推荐_IP_93

kubectl get svc -n kube-system

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_94

kubectl get pods -o wide --all-namespaces

kubernetes 安装kuboard kubernetes 安装推荐_开发工具_95

打开浏览器 访问

https://192.168.100.13:34392

使用 Firefox 浏览器

kubernetes 安装kuboard kubernetes 安装推荐_IP_96

使用 k8s-admin  令牌 登录

k8s-admin.yaml

---

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

kubectl create -f k8s-admin.yaml

kubernetes 安装kuboard kubernetes 安装推荐_IP_97

kubectl get secret -n kube-system

kubectl describe secret dashboard-admin-token-g64n4 -n kube-system

找到最下面的令牌:

 eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tZzY0bjQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYTA4ZDA0OTQtZDQ2ZC0xMWU5LTkxMGYtMDAwYzI5ZjUyMjMxIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.tqFByxlIY3eLjHWzA7nY5Sm3-cHz_vbNSSTCnbe91XKmwJDYSmN-b3XtkR2bWk0PC4UUyPr3HVXqW_tblgbBAOgmm22DI4yXmf0Rn82QBAYEHu-brCxb1u-9NRle09gjlsZtCiTggS5D7Pa-QNXZGYxDEwSPSi19kmvaNJIYVfmJCmTiyW3ObiSKYOLj_f21XOucdfr4lrIt0EA-TksfM3B0DfiEsu_nIGOWCEivh15XLm2hE-en45Y0cNH8XCTlMaOT-WmGUi9E1hZ9da9pKc0wKAuIUgtI25SrzhILabVxw9u-iar2YqFxUrsGf4u55TlJ74x9YKeCYFnqCVhsTg

kubernetes 安装kuboard kubernetes 安装推荐_Pod_98

kubernetes 安装kuboard kubernetes 安装推荐_json_99

kubernetes 安装kuboard kubernetes 安装推荐_运维_100