k8s集群之etcd数据库部署+节点组件部署

一、Kubernetes集群部署方式

方式1. minikube

方式2. kubeadm

方式3. 直接使用epel-release yum源,缺点就是版本较低 1.5

方式4. 二进制包

           从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。

二进制方式部署k8s集群

目标任务:

1、Kubernetes集群部署架构规划

2、部署Etcd集群

3、在Node节点安装Docker

4、部署Flannel网络

5、在Master节点部署组件

6、在Node节点部署组件

7、查看集群状态

8、运行一个测试示例

9、部署Dashboard(Web UI)

方式4. 二进制包——先讲解

********************k8s集群****************************

1、etcd集群——二进制包

(1)3个节点——改名字,做域名解析

(2)证书工具

—— 3个证书工具下载,授权+x
—— 3个证书移动位置改名字

(3)生成证书

—— 创建以下三个文件:
       #生成ca中心的  ca-config.json
       #生成ca中心的证书请求文件  ca-csr.json
       #生成服务器的证书请求文件  server-csr.json

—— 生成证书:
        # cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
        # cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
        # ls *pem   
                 ca-key.pem  ca.pem  server-key.pem  server.pem

*************************3台机子都操作*****************

三个etcd节点操作一样,唯一不同的是etcd配置文件中的服务器IP要写当前的

(4)安装etcd

—— 下载 etcd包
—— 创文件 # mkdir   -p    /opt/etcd/{bin,cfg,ssl}
—— 解压 etcd包
—— 移动文件位置 # mv    etcd-v3.2.12-linux-amd64/{etcd,etcdctl}     /opt/etcd/bin/

(5)创建etcd配置文件

—— # vim   /opt/etcd/cfg/etcd  (每个节点名称不一样)

(6)systemd管理etcd

—— # vim  /usr/lib/systemd/system/etcd.service

(7)把刚才生成的证书拷贝到配置文件中的位置:(将master上面生成的证书scp到剩余两台机器上面)

—— # cd /root/cert/
——  # cp ca*pem server*pem /opt/etcd/ssl
—— 直接拷贝到剩余两台etcd机器:
         # scp ca*pem server*pem k8s-node1:/opt/etcd/ssl
         # scp ca*pem server*pem k8s-node2:/opt/etcd/ssl

(8)全部启动并设置开启启动:

—— # systemctl daemon-reload
—— # systemctl start etcd
—— # systemctl enable etcd

(9)都部署完成后,三台机器都检查etcd集群状态:

—— # /opt/etcd/bin/etcdctl --ca-file=/opt/etcd/ssl/ca.pem --cert-file=/opt/etcd/ssl/server.pem --key-file=/opt/etcd/ssl/server-key.pem --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" cluster-health

 

================在Node节点安装Docker==================

# yum install -y yum-utils device-mapper-persistent-data lvm2 git
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum install docker-ce -y
# systemctl   start docker     #启动设置开机自启

                                #配置加速器        

# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://bc437cce.m.daocloud.io   #配置加速器                                              


                                 #配置Flannel

(1)配置Flannel:

        mkdir -pv    /opt/kubernetes/bin
        mkdir -pv   /opt/kubernetes/cfg

(2)systemd管理Flannel

        vim   /usr/lib/systemd/system/flanneld.service

(3)配置Docker启动指定子网段:可以将源文件直接覆盖掉

        vim   /usr/lib/systemd/system/docker.service 

 

----------------------下面这些操作在master节点完成:--------------------------


********************在Master节点部署组件********************

api-server创建的证书。别的服务访问api-server的时候需要通过证书认证
创建CA证书:
(1)mkdir   -p    /opt/crt/ 
         cd   /opt/crt
         vim    /opt/crt/ca-config.json
         vim    ca-csr.json
(2)cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

生成apiserver证书:
(3)vim server-csr.json
(4)cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server

生成kube-proxy证书:
(5)vim   kube-proxy-csr.json
(6)cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy
最终生成以下证书文件:
(7)ls *.pem

================(1)部署apiserver组件**---在master节点进行

(1)mkdir   /opt/kubernetes/{bin,cfg,ssl}     -pv
(2)解压  kubernetes-server-linux-amd64.tar.gz
(3)cd    kubernetes/server/bin
(4)cp kube-apiserver kube-scheduler kube-controller-manager kubectl /opt/kubernetes/bin

(5)cd /opt/crt/
        cp server.pem server-key.pem ca.pem ca-key.pem /opt/kubernetes/ssl/

(6)创建token文件:
        cd     /opt/kubernetes/cfg/
        vim   token.csv

(7)创建apiserver配置文件:
         vim  kube-apiserver

(8)systemd管理apiserver:
         cd       /usr/lib/systemd/system
         vim     kube-apiserver.service


================(2)部署schduler组件**---master节点

(1)创建schduler配置文件:
        vim  /opt/kubernetes/cfg/kube-scheduler

(2)systemd管理schduler组件:
        cd     /usr/lib/systemd/system/
        vim    kube-scheduler.service

                  
================(3)部署controller-manager组件--控制管理组件

(1)创建controller-manager配置文件:
        cd       /opt/kubernetes/cfg/
        vim     kube-controller-manager

(2)systemd管理controller-manager组件:
        cd     /usr/lib/systemd/system/
        vim    kube-controller-manager.service

     所有组件都已经启动成功,通过kubectl工具查看当前集群组件状态:
               /opt/kubernetes/bin/kubectl    get    cs


----------------------下面这些操作还在master节点完成:--------------------------

(1)将kubelet-bootstrap用户绑定到系统集群角色

       /opt/kubernetes/bin/kubectl create    。。。。。。。

(2)创建kubeconfig文件:
        在生成kubernetes证书的目录下执行以下命令生成kubeconfig文件:
        cd    /opt/crt/

——指定apiserver 内网负载均衡地址
        KUBE_APISERVER="https://IP1:6443"  #写你master的ip地址,集群中就写负载均衡的ip地址
        BOOTSTRAP_TOKEN=674c457d4dcf2eefe4920d7dbb6b0ddc

——设置集群参数
        /opt/kubernetes/bin/kubectl config 。。。。。。。。。

——设置客户端认证参数
        /opt/kubernetes/bin/kubectl config 。。。。。。。。。

——设置上下文参数
        /opt/kubernetes/bin/kubectl config 。。。。。。。。

——设置默认上下文
        /opt/kubernetes/bin/kubectl config。。。。。。。。。。

(3)创建kube-proxy kubeconfig文件
——设置集群参数
——设置客户端认证参数
——设置上下文参数
——设置默认上下文

(4)#必看:将这两个文件拷贝到Node节点/opt/kubernetes/cfg目录下。
        scp    *.kubeconfig    k8s-node1:/opt/kubernetes/cfg/
        scp    *.kubeconfig   k8s-node2:/opt/kubernetes/cfg/


----------------------下面这些操作在node节点完成:--------------------------

将前面下载的二进制包中的kubelet和kube-proxy拷贝到/opt/kubernetes/bin目录下

(1)部署kubelet组件

——解压tar xzf kubernetes-server-linux-amd64.tar.gz
        ——cd    kubernetes/server/bin/
        ——cp    kubelet  kube-proxy       /opt/kubernetes/bin/

——在两个node节点创建kubelet配置文件:
         vim     /opt/kubernetes/cfg/kubelet
         —— 文件里有镜像要下载镜像
         docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
         ——文件里还有个配置文件要自己手写
         vim    /opt/kubernetes/cfg/kubelet.config

——ystemd管理kubelet组件:
        vim     /usr/lib/systemd/system/kubelet.service 

——启动:
# systemctl daemon-reload
# systemctl enable kubelet
# systemctl start kubelet
# /opt/kubernetes/bin/kubectl get csr

——查看集群节点信息:
[root@k8s-master1 ~]# /opt/kubernetes/bin/kubectl get node

 

(2)部署kube-proxy组件

——创建kube-proxy配置文件

# vim    /opt/kubernetes/cfg/kube-proxy

——systemd管理kube-proxy组件:

# vim   /usr/lib/systemd/system/kube-proxy.service 

——启动:

# systemctl daemon-reload
# systemctl enable kube-proxy
# systemctl start kube-proxy

——在master查看集群状态
[root@k8s-master1 ~]# /opt/kubernetes/bin/kubectl get node

——查看集群状态
[root@k8s-master1 ~]# /opt/kubernetes/bin/kubectl get cs
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok                   
controller-manager   Healthy   ok                   
etcd-0               Healthy   {"health": "true"}   
etcd-1               Healthy   {"health": "true"}   
etcd-2               Healthy   {"health": "true"}

(3)部署Dashboard(Web UI)

* dashboard-deployment.yaml         #部署Pod,提供Web服务
* dashboard-rbac.yaml               #授权访问apiserver获取信息
* dashboard-service.yaml            #发布服务,提供对外访问

——创建一个目录
[root@k8s-master ~]# mkdir   webui

[root@k8s-master ~]# cd   webui/

[root@k8s-master webui]# vim   dashboard-deployment.yaml 

[root@k8s-master webui]# vim   dashboard-rbac.yaml

[root@k8s-master webui]#vim    dashboard-service.yaml

[root@k8s-master webui]# /opt/kubernetes/bin/kubectl  create  -f  dashboard-rbac.yaml

[root@k8s-master webui]# /opt/kubernetes/bin/kubectl  create  -f  dashboard-deployment.yaml

[root@k8s-master webui]# /opt/kubernetes/bin/kubectl  create  -f  dashboard-service.yaml

等待数分钟,查看资源状态:

——查看名称空间:
[root@k8s-master webui]# /opt/kubernetes/bin/kubectl get all -n kube-system

——查看指定命名空间的服务
[root@k8s-master webui]# /opt/kubernetes/bin/kubectl get svc -n kube-system

访问node节点的ip

k8s集群之etcd数据库部署+节点组件部署_第1张图片

测试

==========================================================
运行一个测试示例--在master节点先安装docker服务
创建一个Nginx Web,判断集群是否正常工
# /opt/kubernetes/bin/kubectl run nginx --image=daocloud.io/nginx --replicas=3
# /opt/kubernetes/bin/kubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort

# /opt/kub.../bin/kubectl delete -f  deployment  --all 

在master上面查看:
查看Pod,Service:
# /opt/kubernetes/bin/kubectl get pods  #需要等一会
NAME                                 READY     STATUS    RESTARTS   AGE
nginx-64f497f8fd-fjgt2       1/1      Running   3          28d
nginx-64f497f8fd-gmstq       1/1      Running   3          28d
nginx-64f497f8fd-q6wk9       1/1      Running   3          28d

查看pod详细信息:
# /opt/kubernetes/bin/kubectl describe pod nginx-64f497f8fd-fjgt2 

# /opt/kubernetes/bin/kubectl get svc

访问nodeip加端口
打开浏览器输入:http://192.168.246.164:38696


恭喜你,集群部署成功!
============================

 

方式2. kubeadm方式部署k8s集群2G+2核 ——下篇讲解

你可能感兴趣的:(kubernetes,运维,linux,服务器,容器)