Kubernetes多节点二进制线网部署(实例!!!)

前情回顾

部署K8s多节点,首先得署单节master的k8s群集
详情参考:
blog.csdn.net/caozhengtao1213/article/details/103987039

本篇内容

1.部署Master2
2.Nginx负载均衡部署-keeplived服务
3.node节点修改配置文件统一VIP
4.创建Pod
5.创建UI显示界面


环境准备

角色 地址 安装组件
master 192.168.142.129 kube-apiserver kube-controller-manager kube-scheduler etcd
master2 192.168.142.120 kube-apiserver kube-controller-manager kube-scheduler
node1 192.168.142.130 kubelet kube-proxy docker flannel etcd
node2 192.168.142.131 kubelet kube-proxy docker flannel etcd
nginx1(lbm) 192.168.142.140 nginx keepalived
nginx2(lbb) 192.168.142.150 nginx keepalived
VIP 192.168.142.20 -

一、部署Master2

1.远程复制master的相关目录

  • 关闭防火墙及安全功能
systemctl stop firewalld.service
setenforce 0
  • 复制kubernetes目录到master2
scp -r /opt/kubernetes/ [email protected]:/opt
  • 复制etcd目录到master2(内含证书)
scp -r /opt/etcd/ [email protected]:/opt
  • 复制服务启动脚本到master2
scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service [email protected]:/usr/lib/systemd/system/

2.修改kube-apiserver配置文件

vim /opt/kubernetes/cfg/kube-apiserver

#将第5和7行IP地址改为master2主机的地址
--bind-address=192.168.142.120 --advertise-address=192.168.142.120 \

3.启动服务并设定开机自启

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

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

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

4.追加环境变量并生效

vim /etc/profile
#末尾追加
export PATH=$PATH:/opt/kubernetes/bin/

source /etc/profile

5.查看node节点

kubectl get node
NAME              STATUS   ROLES    AGE     VERSION
192.168.142.130   Ready    <none>   10d12h   v1.12.3
192.168.142.131   Ready    <none>   10d11h   v1.12.3

二、Nginx负载均衡部署-keeplived服务

1.在lbm&lbb端的操作,安装nginx服务

  • 把nginx.sh和keepalived.conf脚本拷贝到家目录(后面会用到)
#nginx.sh

cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
EOF

stream {

   log_format  main  ‘$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent‘;
    access_log  /var/log/nginx/k8s-access.log  main;

    upstream k8s-apiserver {
        server 10.0.0.3:6443;
        server 10.0.0.8:6443;
    }
    server {
                listen 6443;
                proxy_pass k8s-apiserver;
    }
    }
#keepalived.conf
! Configuration File for keepalived 

global_defs {
   # 接收邮件地址
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   # 邮件发送地址
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id NGINX_MASTER
} 

vrrp_script check_nginx {
    script "/usr/local/nginx/sbin/check_nginx.sh"
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的
    priority 100    # 优先级,备服务器设置 90
    advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.188/24
    }
    track_script {
        check_nginx
    }
}

mkdir /usr/local/nginx/sbin/ -p
vim /usr/local/nginx/sbin/check_nginx.sh

count=$(ps -ef |grep nginx |egrep -cv "grep|$$")

if [ "$count" -eq 0 ];then
    /etc/init.d/keepalived stop
fi

chmod +x /usr/local/nginx/sbin/check_nginx.sh
  • 编辑nginx.repo文件
vim /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
  • 安装nginx服务
yum install nginx -y
  • 添加四层转发
vim /etc/nginx/nginx.conf
#在第12行下追加以下内容
stream {

   log_format  main  ‘$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent‘;
    access_log  /var/log/nginx/k8s-access.log  main;

    upstream k8s-apiserver {
        server 192.168.142.129:6443;        #此处为master的ip地址
        server 192.168.142.120:6443;        #此处为master2的ip地址
    }
    server {
                listen 6443;
                proxy_pass k8s-apiserver;
    }
    }

2.部署keeplived服务

#安装keepalived
yum install keepalived -y

复制前面的keepalived.conf配置文件,覆盖安装后原有的配置文件
cp keepalived.conf /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

script "/etc/nginx/check_nginx.sh"      #18行,目录改为/etc/nginx/,脚本后写
interface ens33     #23行,eth0改为ens33,此处的网卡名称可以使用ifconfig命令查询
virtual_router_id 51        #24行,vrrp路由ID实例,每个实例是唯一的
priority 100            #25行,优先级,备服务器设置90
virtual_ipaddress {     #31行,
192.168.142.20/24   #32行,vip地址改为之前设定好的192.168.142.20
#38行以下全部删除

vim /etc/nginx/check_nginx.sh
#统计数量
count=$(ps -ef |grep nginx |egrep -cv "grep|$$")    #统计数量
#匹配为0,关闭keepalived服务
if [ "$count" -eq 0 ];then
    systemctl stop keepalived
fi

chmod +x /etc/nginx/check_nginx.sh

#启动服务
systemctl start keepalived
  • 查看地址信息
ip a
# lbm地址信息

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:eb:11:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.142.140/24 brd 192.168.142.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.142.20/24 scope global secondary ens33  //漂移地址在lb01中
       valid_lft forever preferred_lft forever
    inet6 fe80::53ba:daab:3e22:e711/64 scope link
       valid_lft forever preferred_lft forever

#lbb地址信息

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:c9:9d:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.142.150/24 brd 192.168.142.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::55c0:6788:9feb:550d/64 scope link
       valid_lft forever preferred_lft forever
  • 验证地址漂移
#停止lbm端的nginx服务
pkill nginx

#查看服务状态
systemctl status nginx
systemctl status keepalived.service

#此时判断条件若为0,keepalived服务则是停止的
ps -ef |grep nginx |egrep -cv "grep|$$"
  • 查看地址信息
ip a
# lbm地址信息

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:eb:11:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.142.140/24 brd 192.168.142.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::53ba:daab:3e22:e711/64 scope link
       valid_lft forever preferred_lft forever

#lbb地址信息

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:c9:9d:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.142.150/24 brd 192.168.142.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.142.20/24 scope global secondary ens33  //漂移地址在lb01中
       valid_lft forever preferred_lft forever
    inet6 fe80::55c0:6788:9feb:550d/64 scope link
       valid_lft forever preferred_lft forever
  • 恢复操作
#在lbm端启动nginx和keepalived服务
systemctl start nginx
systemctl start keepalived
  • 漂移地址回归lbm端
ip a
# lbm地址信息

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:eb:11:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.142.140/24 brd 192.168.142.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.142.20/24 scope global secondary ens33  //漂移地址在lb01中
       valid_lft forever preferred_lft forever
    inet6 fe80::53ba:daab:3e22:e711/64 scope link
       valid_lft forever preferred_lft forever

三、node节点修改配置文件统一VIP(bootstrap.kubeconfig,kubelet.kubeconfig)

cd /opt/kubernetes/cfg/
#配置文件统一修改为VIP
vim /opt/kubernetes/cfg/bootstrap.kubeconfig

server: https://192.168.142.20:6443
#第5行改为Vip的地址

vim /opt/kubernetes/cfg/kubelet.kubeconfig
server: https://192.168.142.20:6443
#第5行改为Vip的地址

vim /opt/kubernetes/cfg/kube-proxy.kubeconfig
server: https://192.168.142.20:6443
#第5行改为Vip的地址
  • 替换完成后自检
grep 20 *
bootstrap.kubeconfig:    server: https://192.168.142.20:6443
kubelet.kubeconfig:    server: https://192.168.142.20:6443
kube-proxy.kubeconfig:    server: https://192.168.142.20:6443
  • 在lb01上查看nginx的k8s日志
tail /var/log/nginx/k8s-access.log
192.168.142.140 192.168.142.129:6443 - [08/Feb/2020:19:20:40 +0800] 200 1119
192.168.142.140 192.168.142.120:6443 - [08/Feb/2020:19:20:40 +0800] 200 1119
192.168.142.150 192.168.142.129:6443 - [08/Feb/2020:19:20:44 +0800] 200 1120
192.168.142.150 192.168.142.120:6443 - [08/Feb/2020:19:20:44 +0800] 200 1120

四、创建Pod

  • 测试创建Pod
kubectl run nginx --image=nginx
  • 查看状态
kubectl get pods
  • 绑定群集中的匿名用户赋予管理员权限(解决日志不可看问题)
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
  • 查看Pod网络
kubectl get pods -o wid

五、创建UI显示界面

  • 在master1上创建dashborad工作目录
mkdir /k8s/dashboard

cd /k8s/dashboard
#上传官方的文件到该目录中
  • 创建页面,注意顺序
#授权访问api
kubectl create -f dashboard-rbac.yaml

#进行加密
kubectl create -f dashboard-secret.yaml

#配置应用
kubectl create -f dashboard-configmap.yaml

#控制器
kubectl create -f dashboard-controller.yaml

#发布出去进行访问
kubectl create -f dashboard-service.yaml
  • 完成后查看创建在指定的kube-system命名空间下
kubectl get pods -n kube-system
  • 查看如何访问
kubectl get pods,svc -n kube-system
  • 在浏览器中输入nodeIP地址就可以访问(谷歌浏览器无法访问题解决方法)

1.在master端操作,编写进行证书自签

vim dashboard-cert.sh

cat > dashboard-csr.json <<EOF
{
   "CN": "Dashboard",
   "hosts": [],
   "key": {
       "algo": "rsa",
       "size": 2048
   },
   "names": [
       {
           "C": "CN",
           "L": "NanJing",
           "ST": "NanJing"
       }
   ]
}
EOF

K8S_CA=$1
cfssl gencert -ca=$K8S_CA/ca.pem -ca-key=$K8S_CA/ca-key.pem -config=$K8S_CA/ca-config.json -profile=kubernetes dashboard-csr.json | cfssljson -bare dashboard
kubectl delete secret kubernetes-dashboard-certs -n kube-system
kubectl create secret generic kubernetes-dashboard-certs --from-file=./ -n kube-system

2.重新应用新的自签证书

bash dashboard-cert.sh /root/k8s/apiserver/

3.修改yaml文件

vim dashboard-controller.yaml
#在47行下追加以下内容
          - --tls-key-file=dashboard-key.pem
          - --tls-cert-file=dashboard.pem

4.重新进行部署

kubectl apply -f dashboard-controller.yaml

5.生成登录令牌

  • 生成令牌
kubectl create -f k8s-admin.yaml
  • 将令牌保存
kubectl get secret -n kube-system
NAME                               TYPE                                  DATA   AGE
dashboard-admin-token-drs7c        kubernetes.io/service-account-token   3      60s
default-token-mmvcg                kubernetes.io/service-account-token   3      55m
kubernetes-dashboard-certs         Opaque                                10     10m
kubernetes-dashboard-key-holder    Opaque                                2      23m
kubernetes-dashboard-token-crqvs   kubernetes.io/service-account-token   3      23m
  • 查看令牌
kubectl describe secret dashboard-admin-token-drs7c -n kube-system

6.复制粘贴令牌后,登录到UI界面

谢谢阅读!

原文地址:https://blog.51cto.com/14449521/2469945

时间: 2024-07-31 08:47:54

Kubernetes多节点二进制线网部署(实例!!!)的相关文章

Kubernetes二进制线网部署(实例!!!)

本次类容 1.官方提供的三种部署方式2.Kubernetes 平台环境规划3.自签SSL证书4.Etcd数 据库集群部署5.Node安装Docker6.Flannel容 器集群网络部署7.部署Master组件8.部署Node组件9.部署一个测试示例10.部署Web UI (Dashboard )11.部署集群内部DNS解析服务(CoreDNS) 官方提供的三种部署方式 minikube Minikube是一个工具,可以在本地快速运行-一个单点的Kubernetes,仅用子尝试Kubemnetes

kubernetes系列03—kubeadm安装部署K8S集群

1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm 安装kubernetes(本文演示的就是此方法) 优点:你只要安装kubeadm即可:kubeadm会帮你自动部署安装K8S集群:如:初始化K8S集群.配置各个插件的证书认证.部署集群网络等.安装简易. 缺点:不是自己一步一步安装,可能对K8S的理解不会那么深:并且有那一部分有问题,自己不好修正. 1.3.2 方法2:二进制安装部署k

kubernetes 1.10.1 版本 部署

kubernetes组件 Master组件: kube-apiserver Kubernetes API,集群的统一入口,各组件协调者,以HTTP API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交 kube-controller-manager 处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的. kube-scheduler 根据调度算法为新创建的Pod选择一个Node节点. Node组件: ku

OpenStack-Icehouse(nova-network)多节点基础环境部署

内容列表 一.组件介绍 二.系统准备 三.Controller Node部署     1.MySQL     2.Qpid     3.Glance     4.Nova     5.Horizon 四.Compute Node部署     1.Nova-Compute     2.Nova-Network 五.部署云主机 参考文档: http://docs.openstack.org/icehouse/install-guide/install/yum/openstack-install-gu

k8s/Kubernetes常用组件Helm的部署

Helm的安装 1.Helm的基本概念 Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具. Helm有如下几个基本概念: Chart: 是Helm管理的安装包,里面包含需要部署的安装包资源.可以把Chart比作CentOS yum使用的rpm文件.每个Chart包含下面两部分: 包的基本描述文件Chart.yaml 放在templates目录中的一个或多个Kubernetes manifest文件模板 Rel

Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 部署规划

1. 安装规划 1.1 部署节点说明 etcd集群规划 etcd 中心集群 192.168.2.247192.168.2.248192.168.2.249 etcd 事件集群 192.168.2.250192.168.2.251192.168.2.252 Kubernetes master节点集群规划 192.168.3.10192.168.3.11192.168.3.12192.168.3.13192.168.3.14 Kubernetes master vip 192.168.4.1192.

使用confd与nginx 实现kubernetes master节点高可用

下载confd 二进制文件 # 创建目录方便存放文件 mkdir confd # 进入新创建的目录 cd confd # 下载 confd wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64 # 重命名 mv confd-0.16.0-linux-amd64 confd # 给confd 可执行权限 chmod +x confd 生成confd 配置 #

Solr 4.0 部署实例教程

Solr 4.0 部署实例教程 Solr 4.0的入门基础教程,先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrServer,我是找了半天才发现,大家以后可以注意. 部署前准备: Solr 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可. Solr 4.0 :  http://www.apache.org/dyn/closer.cgi/lu

三、安装并配置Kubernetes Node节点

1. 安装并配置Kubernetes Node节点 1.1 安装Kubernetes Node节点所需服务 yum -y install kubernetes ? 通过yum安装kubernetes服务时默认将所有的Kubernetes服务全部安装,我们只需要在Master和Node上启动相应的服务即可. 1.2 修改Kubernetes服务配置文件 vim /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true" KUB