当前位置: 首页 > news >正文

个人网站怎么设计/重庆网站推广软件

个人网站怎么设计,重庆网站推广软件,杭州淘宝运营培训,河西做网站单节点部署规划1.相关软件包2.注意点K8S部署一、etcd群集部署在所有主机上操作1.给三台主机设置别名在master上操作1.创建k8s工作目录2.下载cfssl工具,三个工具3.定义ca证书的配置文件4.实现证书签名的请求文件5.生成ca证书,生成ca-key.pem ca.pem6.指定…

  • 单节点部署规划
      • 1.相关软件包
      • 2.注意点
  • K8S部署
    • 一、etcd群集部署
      • `在所有主机上操作`
        • 1.给三台主机设置别名
      • `在master上操作`
        • 1.创建k8s工作目录
        • 2.下载cfssl工具,三个工具
        • 3.定义ca证书的配置文件
        • 4.实现证书签名的请求文件
        • 5.生成ca证书,生成ca-key.pem ca.pem
        • 6.指定etcd三个节点之间的通信验证
        • 7. 生成ETCD服务端证书
        • 8.下载ETCD二进制包,并解压
        • 9.创建etcd工作目录
        • 10.进入卡住状态等待其他节点加入
        • 11.将 /opt/ 目录下 etcd/ 目和启动文件cp到其他etcd节点
      • `在node01节点上操作`
        • 1.修改配置文件
        • 2.启动etcd服务
      • `在node02节点上操作`
        • 1.修改配置文件
        • 2.启动etcd服务
        • 3.检查etcd群集状态
    • 二、flannel网络配置
      • `在node01节点操作`
        • 1.安装docker-ce
      • `node02节点操作`
        • 1.安装docker-ce
      • `master上操作`
        • 1.入分配的子网段到ETCD中,供flannel使用
        • 2.查看写入etcd数据库的网络规划信息
      • `到node节点操作`
        • 1.解压flannel工具包
        • 2.创建kubernetes工作目录
        • 3.开启flannel网络功能
        • 4.配置docker连接 flannel
        • 5.进行flannel 网络的测试,证明其路由功能
          • 5.1 在node1节点创建容器
          • 5.2 在node2节点创建容器
    • 三、部署master组件
      • `在master上操作`
        • 1.解压工具包
        • 2.创建kubernetes工作目录及证书目录
        • 3.定义ca证书配置的json文件
        • 5.生成kubernetes的ca证书
        • 6.用于请求服务端证书签发的请求文件
        • 7.生成服务端ca证书
        • 8.制作admin管理用户的证书请求文件
        • 9.生成admin的ca证书
        • 10.制作用于proxy代理的ca证书请求文件
        • 11.生成proxy的ca证书
        • 12.查看K8S证书
        • 13.解压kubernetes压缩包
        • 14.复制关键命令文件到/opt/kubernetes/bin/下
        • 15.制作token令牌文件
        • 16.开启apiserver
        • 17.查看配置文件
        • 18.查看监听的https端口
        • 19.启动scheduler服务
        • 20.启动controller-manager
        • 21.查看master 节点状态
        • 22.将kubelet 和 kube-proxy 两个国家scp给两个节点
      • `在node01节点上部署`
        • 1.复制node.zip到/root目录下再解压
      • `回到master上`
        • 1.拷贝kubeconfig.sh文件进行重命名
        • 2.设置环境变量
        • 3.生成配置文件
        • 4.拷贝配置文件到node节点
        • 5.创建bootstrap角色赋予权限用于连接apiserver请求签名(关键)
      • `在node01节点操作`
        • 1.启动kubelete服务
      • `在node02节点操作`
        • 1.启动kubelete服务
      • `再回到master上操作`
        • 1.检查到node01节点的请求
        • 2.给该节点颁发证书
        • 3.继续查看证书状态
        • 4.查看群集节点,成功加入的节点
      • `到node01节点操作`
        • 1.启动proxy服务
      • `到node01节点操作`
        • 1.启动proxy服务
        • 4.查看群集节点,成功加入的节点
      • `到node01节点操作`
        • 1.启动proxy服务
      • `到node01节点操作`
        • 1.启动proxy服务

单节点部署规划

1.相关软件包

Master:192.168.10.10 kube-apiserver kube-controller-manager kube-scheduler etcd
Node01:192.168.10.20 kubelet kube-proxy docker flannel etcd
Node02:192.168.10.30 kubelet kube-proxy docker flannel etcd

2.注意点

  • 在生产环境中 Etcd 一般都是放在master上的,(因为master是要确保不能宕机的,因此放在master上较为安全,因为是实验环境,因此放到node节点上也行)
  • master服务器上需要apiserver核心部件,contorller、scheduler部件以及etcd数据库node节点需要docker环境,flannel网络插件分配网络,etcd数据库群集(部署在node上方便实验),proxy代理部件,以及kubelet部件,kubelet在这个单节点实验中主要的作用是想master提交证书的申请

注意点:在master上一定不要安装docker,为了保障master的安全性,预防黑客攻破接地那服务器,通过docker控制master

K8S部署

一、etcd群集部署

官网地址:https://github.com/kubernetes/kubernetes/releases?after=v1.13.1

在所有主机上操作

1.给三台主机设置别名

[root@localhost ~]# hostnamectl set-hostname master01
[root@localhost ~]# su
[root@master01 ~]# 
[root@localhost ~]# hostnamectl set-hostname node01
[root@localhost ~]# su
[root@master01 ~]# 
[root@localhost ~]# hostnamectl set-hostname node02
[root@localhost ~]# su
[root@master01 ~]# 

在master上操作

1.创建k8s工作目录

[root@master01 ~]#  mkdir k8s[root@master01 ~]#  cd k8s/

2.下载cfssl工具,三个工具

下载证书制作工具(cfssl cfssl-certinfo cfssljson)已经下载好了,直接从宿主机拿过来

[root@localhost k8s]# vim 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[root@localhost k8s]# bash cfssl.sh   ##执行脚本下载cfssl官方包
[root@master01 k8s]# ls /usr/local/bin/        ##已经下载好了,直接从宿主机拉取过来
cfssl  cfssl-certinfo  cfssljson
[root@master01 k8s]# mv * /usr/local/bin/
[root@master01 k8s]# cd /usr/local/bin/
[root@master01 bin]# chmod +x *

--------------------------------------------------------------------------------------------------------------

工具包用途

 cfssl :生成证书工具cfssljson:通过传入json文件生成证书cfssl-certinfo:查看证书信息

--------------------------------------------------------------------------------------------------------------

3.定义ca证书的配置文件

[root@master01 bin]# mkdir ~/k8s/etcd-cert                  ##创建证书存放目录[root@master01 k8s]#  cd ~/k8s/etcd-cert/
[root@master01 etcd-cert]# cat > ca-config.json <<EOF> {
> "signing": {                         ##定义了下面的签字内容
>  "default": {
>    "expiry": "87600h"          ## 有效期10年
>  },
>  "profiles": {                        ## 定义文件类型为配置文件 
>    "www": {                          ## 以www开头
>       "expiry": "87600h",       ## 有效期10年
>       "usages": [                    ## 用法
>          "signing",                   ## 签字
>          "key encipherment", ## 加密秘钥的方式
>          "server auth",            ## 服务器认证
>          "client auth"              ## 客户端认证
>      ]
>    }
>  }
> }
> }
> EOF

—————————————————————————————————————
补充解释:

  • ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;

  • signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;

  • server auth:表示 client 可以用该 CA 对 server 提供的证书进行验证;

  • client auth:表示 server 可以用该 CA 对 client 提供的证书进行验证;

—————————————————————————————————————

4.实现证书签名的请求文件

[root@master01 etcd-cert]# cat > ca-csr.json <<EOF 
{   
"CN": "etcd CA",       ## CN 指定该证书的 User 为 etcd CA;etcd的ca证书
"key": {                      ## 定义key类型"algo": "rsa",         ## rsa非对称秘钥"size": 2048          ## 秘钥长度,注意点:几个证书指明的秘钥长度一定要一样
},
"names": [                ## 证书的names内指定证书包含的信息,可以包含国家,地区,公司,部门等等(注意:几个证书的names信息一定要相同){"C": "CN",          ## 中国"L": "Beijing",     ## 北京"ST": "Beijing"   ## 北京时区}
]
}
EOF

————————————————————————————————

补充解释:

  • “CN”:“Common Name”,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;
    CN 指定该证书的 User 为 etcd CA;
  • “O”:“Organization”,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);也可以是组织
  • “OU”:组织单位
  • key:证书加密的方式,一般是RSA 2048
  • L 字段 :所在城市 (Locality) 简称
  • S 字段:所在省份 (State/Provice)
  • C 字段:所在国家 (Country),只能是国家字母缩写,如中国:CN
  • names:证书包含的信息,可以包含国家,地区,公司,部门等等,我们可以在kubeadm中修改对于这部分内容的验证,达到证书的管理控制功能。

———————————————————————————————

5.生成ca证书,生成ca-key.pem ca.pem

[root@master01 etcd-cert]# ls
ca-config.json  ca-csr.json[root@master01 etcd-cert]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
2020/11/22 02:59:32 [INFO] generating a new CA key and certificate from CSR
2020/11/22 02:59:32 [INFO] generate received request
2020/11/22 02:59:32 [INFO] received CSR
2020/11/22 02:59:32 [INFO] generating key: rsa-2048
2020/11/22 02:59:33 [INFO] encoded CSR
2020/11/22 02:59:33 [INFO] signed certificate with serial number 9797308770013994243491625199529899647280639512[root@master01 etcd-cert]# ls    ##生成两个ca证书
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem

  • cfssl gencert生成"CA证书"和"CA私钥"的指令,cfssljson -bare ca - 指读取基本信息

  • cfssljson:通过传入json文件生成证书

  • 生成: ca.pem ca-key.pem ca.csr (证书签名请求,用于交叉签名或重新签名)


6.指定etcd三个节点之间的通信验证

[root@master01 etcd-cert]# cat > server-csr.json <<EOF
{"CN": "etcd",               ## 指明 CN 指定该证书的 User 为 etcd ,etcd的server证书"hosts": [                  ## 指定通讯节点"192.168.10.10","192.168.10.20","192.168.10.30"],"key": {                    ##定义秘钥"algo": "rsa",          ## rsa类型"size": 2048            ## 长度是2048},"names": [                  ## 证书的名称内指定了授权证书的CA机构的具体区域{"C": "CN","L": "BeiJing","ST": "BeiJing"}]
}
EOF

7. 生成ETCD服务端证书

server-key.pem 和 server.pem

[root@master01 etcd-cert]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
2020/11/22 03:06:19 [INFO] generate received request
2020/11/22 03:06:19 [INFO] received CSR
2020/11/22 03:06:19 [INFO] generating key: rsa-2048
2020/11/22 03:06:19 [INFO] encoded CSR
2020/11/22 03:06:19 [INFO] signed certificate with serial number 703113062882105094636341796051856934816186724582[root@master01 etcd-cert]# ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem  server.csr  server-csr.json  server-key.pem  server.pem

———————————————————————————

注意:到这一步, 有用的文件是:

  • ca-key.pem ca.pem server-key.pem server.pem 这四个证书(两个server证书,两个ca证书)

  • ca的签名文件ca.csr可以删除,是没有用的,但是 ca-csr.json server-csr.json ca-config.json 这三个json格式的证书最好自己保留一份下来,里面记录了秘钥长度,CA机构信息(如beijin)等,以防更新证书时忘记了里面的信息,导致更新失败。毕竟生产环境中的服务节点有很多

—————————————————————------------————————

8.下载ETCD二进制包,并解压

————————————————————————-----———————

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

需要用到下面三个软件包,可以在上面网址下载,(已经下载好了,直接从宿主机中拿来)

etcd-v3.3.10-linux-amd64.tar.gz
flannel-v0.10.0-linux-amd64.tar.gz
kubernetes-server-linux-amd64.tar.gz

———————————————————————————————

[root@master01 ~]# ls *.tar.gz    ##查看相关软件包
etcd-v3.3.10-linux-amd64.tar.gz  flannel-v0.10.0-linux-amd64.tar.gz  kubernetes-server-linux-amd64.tar.gz
[root@master01 ~]# mv $(ls *.tar.gz) k8s/     ## 将这几个包移动到 k8s 目录下[root@master01 k8s]# ls ~/k8s/*.tar.gz     ## 查看是否移动到 k8s 目录下
etcd-cert  etcd-v3.3.10-linux-amd64.tar.gz  flannel-v0.10.0-linux-amd64.tar.gz  kubernetes-server-linux-amd64.tar.gz[root@master01 k8s]#  tar zxvf etcd-v3.3.10-linux-amd64.tar.gz[root@master01 k8s]# ls 
etcd-v3.3.10-linux-amd64Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md

9.创建etcd工作目录

[root@master01 k8s]#  mkdir /opt/etcd/{cfg,bin,ssl} -p       ##创建k8s目录下三个子目录,cfg配置文件目录、bin命令文件目录、ssl证书文件目录[root@master01 k8s]# mv etcd-v3.3.10-linux-amd64/etcd etcd-v3.3.10-linux-amd64/etcdctl /opt/etcd/bin/     ##将etcd 和 etcdctl这两个工具存放到/opt/etcd/bin/下[root@master01 k8s]# cp etcd-cert/*.pem /opt/etcd/ssl/     ## 将几个证书文件复制放到ssl目录下[root@master01 k8s]# cd /opt/etcd/bin/       ##cd 到 /opt/etcd/bin/ 下[root@master01 bin]# rz -E       ##将宿主机上已经写好的 etcd.sh 构建集群的脚本复制过来[root@master01 bin]# ls etcd.sh   
etcd.sh

————————————————————————————————

[root@master01 bin]# cat etcd.sh         ##查看etcd.sh脚本内容# !/bin/bash# example: bash etcd.sh etcd01 192.168.10.10 etcd02=https://192.168.10.20:2380,etcd03=https://192.168.10.30:2380    ##执行脚本侯建集群的示例,ETCD_NAME=$1         ## 定义了变量,值是"示例命令"中的etcd01
ETCD_IP=$2                ## 定义的变量,值是etcd01的ip
ETCD_CLUSTER=$3     ## 定义了变量值为 etcd 群集中的其他成员的 名称 及 ip 地址WORK_DIR=/opt/etcd   ##定义了工作目录cat <<EOF >$WORK_DIR/cfg/etcd                      ## 生成etcd文件到cfg配置文件目录下# [Member]                                         ## 对etcd成员的配置ETCD_NAME="${ETCD_NAME}"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"         ## 定义数据存放目录
ETCD_LISTEN_PEER_URLS="https://${ETCD_IP}:2380"    ## 开放群集之间内部通讯的一个端口 2379
ETCD_LISTEN_CLIENT_URLS="https://${ETCD_IP}:2379"         ## 自己(即etcd01)对外客户端开放的一个端口是2380# [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"                                                                  ## token认证令牌"etcd-cluster",每个etcd节点必须一致
ETCD_INITIAL_CLUSTER_STATE="new"                ## 指明状态,构建新集群的状态
EOFcat <<EOF >/usr/lib/systemd/system/etcd.service          ## systemctl启动文件
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target[Service]
Type=notify                                                                                                        ## 类型:notify
EnvironmentFile=${WORK_DIR}/cfg/etcd                 ## 配置文件所在位置
ExecStart=${WORK_DIR}/bin/etcd \                                                                   ## 启动文件 /opt/etcd/bin/etcd
--name=\${ETCD_NAME} \                              ## 指明了名称 etcd01
--data-dir=\${ETCD_DATA_DIR} \                      ## 指明数据存放目录
--listen-peer-urls=\${ETCD_LISTEN_PEER_URLS} \      ## 指定群集间内部通讯端口2380
--listen-client-urls=\${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \     ## 客户端监听端口2379,监听本地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 \               ## 指定可信证书CA证书
--peer-trusted-ca-file=${WORK_DIR}/ssl/ca.pem            ## 匹配可信证书CA证书
Restart=on-failure                                       ## 重启策略
LimitNOFILE=65536                                        ## 限制用户打开最大文件数                                          [Install]
WantedBy=multi-user.target                                ## 运行多用户登入
EOFsystemctl daemon-reload
systemctl enable etcd
systemctl restart etcd

—————————————————————————————————

10.进入卡住状态等待其他节点加入

[root@master01 bin]#  bash etcd.sh etcd01 192.168.10.10 etcd02=https://192.168.10.20:2380,etcd03=https://192.168.10.30:2380[root@master01 bin]#  ps aux | grep etcd   ##使用另外一个终端打开,会发现etcd进程已经开启

11.将 /opt/ 目录下 etcd/ 目和启动文件cp到其他etcd节点

(里面有配置文件、证书文件、命令文件),然后进行部分修改即可

[root@master01 bin]# scp -r /opt/etcd/ root@192.168.10.20:/opt/
root@192.168.10.20's password: 
etcd                              100%  509   238.5KB/s   00:00    
etcd                              100%   18MB  67.1MB/s   00:00    
etcdctl                           100%   15MB  91.6MB/s   00:00    
etcd.sh                           100% 1764   929.1KB/s   00:00    
ca-key.pem                        100% 1675     2.2MB/s   00:00    
ca.pem                            100% 1265   958.4KB/s   00:00    
server-key.pem                    100% 1679     1.7MB/s   00:00    
server.pem                        100% 1338     1.4MB/s   00:00    [root@master01 bin]# scp -r /opt/etcd/ root@192.168.10.30:/opt/
root@192.168.10.30's password: 
etcd                              100%  509   238.5KB/s   00:00    
etcd                              100%   18MB  67.1MB/s   00:00    
etcdctl                           100%   15MB  91.6MB/s   00:00    
etcd.sh                           100% 1764   929.1KB/s   00:00    
ca-key.pem                        100% 1675     2.2MB/s   00:00    
ca.pem                            100% 1265   958.4KB/s   00:00    
server-key.pem                    100% 1679     1.7MB/s   00:00    
server.pem                        100% 1338     1.4MB/s   00:00  [root@master01 bin]# scp /usr/lib/systemd/system/etcd.service root@192.168.10.20:/usr/lib/systemd/system/[root@master01 bin]# scp /usr/lib/systemd/system/etcd.service root@192.168.10.30:/usr/lib/systemd/system/

在node01节点上操作

1.修改配置文件

[root@node01 ~]# cd /opt/etcd/cfg
[root@node01 ~]# vim etcd # [Member]ETCD_NAME="etcd03"       ##修改etcd名称
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.10.30:2380"   ##修改ip  
ETCD_LISTEN_CLIENT_URLS="https://192.168.10.30:2379"   ##修改ip# [Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.30:2380"   ##修改ip
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.30:2379"   ##修改ip
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.10.10:2380,etcd02=https://192.168.10.20:2380,etcd03=https://192.168.10.30:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

2.启动etcd服务

注意:要在master处于等待etcd群集节点加入状态下启动etcd服务

[root@localhost ssl]# systemctl start etcd[root@localhost ssl]# systemctl status etcd

在node02节点上操作

1.修改配置文件

[root@node02 ~]# cd /opt/etcd/cfg
[root@node02 ~]# vim etcd # [Member]ETCD_NAME="etcd03"       ##修改etcd名称
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.10.30:2380"   ##修改ip  
ETCD_LISTEN_CLIENT_URLS="https://192.168.10.30:2379"   ##修改ip# [Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.30:2380"   ##修改ip
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.30:2379"   ##修改ip
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.10.10:2380,etcd02=https://192.168.10.20:2380,etcd03=https://192.168.10.30:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

2.启动etcd服务

[root@localhost ssl]# systemctl start etcd[root@localhost ssl]# systemctl status etcd

3.检查etcd群集状态

在任意etcd节点都可以检查

[root@node02 cfg]# cd /opt/etcd/ssl/[root@node02 ssl]# /opt/etcd/bin/etcdctl \
--ca-file=ca.pem \
--cert-file=server.pem \
--key-file=server-key.pem \
--endpoints=\
"https://192.168.10.10:2379,\
https://192.168.10.20:2379,\
https://192.168.10.30:2379" \
cluster-healthmember 23599d5be7403bf7 is healthy: got healthy result from https://192.168.10.30:2379
member 245f0eaff21d8741 is healthy: got healthy result from https://192.168.10.10:2379
member be3fc3d5e1dfe2ce is healthy: got healthy result from https://192.168.10.20:2379
cluster is healthy

二、flannel网络配置

在node01节点操作

1.安装docker-ce

[root@node01 cfg]# yum -y install yum-utils device-mapper-persistent-data lvm2[root@node01 ssl]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[root@node01 ssl]# yum install -y docker-ce [root@node01 cfg]# sudo mkdir -p /etc/docker[root@node01 cfg]# sudo tee /etc/docker/daemon.json <<-'EOF'{
"registry-mirrors": ["https://c98mzoaz.mirror.aliyuncs.com"]
}
EOF[root@node01 cfg]# sudo systemctl daemon-reload[root@node01 cfg]# echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf [root@node01 cfg]# sysctl -p
net.ipv4.ip_forward = 1[root@node01 cfg]# systemctl restart network 
[root@node01 cfg]# systemctl restart docker 
[root@node02 cfg]# systemctl enable docker [root@node02 cfg]# systemctl restart network 

node02节点操作

1.安装docker-ce

[root@node01 cfg]# yum -y install yum-utils device-mapper-persistent-data lvm2[root@node01 ssl]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[root@node01 ssl]# yum install -y docker-ce [root@node01 cfg]# sudo mkdir -p /etc/docker[root@node01 cfg]# sudo tee /etc/docker/daemon.json <<-'EOF'{
"registry-mirrors": ["https://c98mzoaz.mirror.aliyuncs.com"]
}
EOF[root@node01 cfg]# sudo systemctl daemon-reload[root@node01 cfg]# echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf [root@node01 cfg]# sysctl -p
net.ipv4.ip_forward = 1[root@node01 cfg]# systemctl restart network 
[root@node01 cfg]# systemctl restart docker 
[root@node02 cfg]# systemctl enable docker [root@node02 cfg]# systemctl restart network 

master上操作

1.入分配的子网段到ETCD中,供flannel使用

在这个实验中并不一定非要在master上操作,因为节点上也有etcd群集,但是生产环境中etcd一般是布局在master上的

[root@master01 ssl]# cd /opt/etcd/ssl/
[root@master01 ssl]# /opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem \
--endpoints="https://192.168.10.10:2379,\
https://192.168.10.20:2379,\
https://192.168.10.30:2379" \
set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'##解释:
--endpoints :指定etcd节点
set :插入 "键值对" 数据信息 ,/coreos.com/network/config 为自定义的集合名;
'{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}' 为 集合内的键值对信息##返回结果{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}##

2.查看写入etcd数据库的网络规划信息

[root@master01 ssl]# /opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem \
--endpoints="https://192.168.10.10:2379,\
https://192.168.10.20:2379,\
https://192.168.10.30:2379" \
get /coreos.com/network/config      ## get查看数据{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}

到node节点操作

(两个节点操作相同)

1.解压flannel工具包

[root@localhost ~]# ls      ## 需要 flannel 软件包
flannel-v0.10.0-linux-amd64.tar.gz [root@localhost ~]# tar zxvf flannel-v0.10.0-linux-amd64.tar.gz     ##解压压缩包,生成下面是两个文件
flanneld
mk-docker-opts.sh
README.md

2.创建kubernetes工作目录

目录下创建配置文件目录、执行脚本目录、证书文件目录,并将解压生成的 mk-docker-opts.sh 和 flanneld 放到执行脚本目录下

[root@node01 ~]# mkdir /opt/kubernetes/{cfg,bin,ssl} -p
[root@node01 ~]# mv mk-docker-opts.sh flanneld /opt/kubernetes/bin/[root@localhost bin]# ls     ## 将 flannel.sh 脚本文件从宿主机拉进来
flannel.sh  [root@localhost bin]# chmod +x flannel.sh ##给执行权限

—————------———————分析脚本——————---------——————

[root@localhost bin]# cat flannel.sh                                   ## 查看分析脚本# !/bin/bashETCD_ENDPOINTS=${1:-"http://127.0.0.1:2379"}             
## 指定etcd节点,从2379端口请求,${1:-"http://127.0.0.1:2379"} 的含义是传入参数$1,若没有$1,这赋值变量"http://127.0.0.1:2379"cat <<EOF >/opt/kubernetes/cfg/flanneld             ## 制作 kubernetes 配置文件FLANNEL_OPTIONS="--etcd-endpoints=${ETCD_ENDPOINTS} \  ## 通过证书连接etcd,请求网段信息
-etcd-cafile=/opt/etcd/ssl/ca.pem \
-etcd-certfile=/opt/etcd/ssl/server.pem \
-etcd-keyfile=/opt/etcd/ssl/server-key.pem"EOFcat <<EOF >/usr/lib/systemd/system/flanneld.service         ##生成启动脚本
[Unit]
Description=Flanneld overlay address etcd agent
After=network-online.target network.target
Before=docker.service                      ## 指明了依赖于docker服务,所以要先安装docker[Service]
Type=notify
EnvironmentFile=/opt/kubernetes/cfg/flanneld
ExecStart=/opt/kubernetes/bin/flanneld --ip-masq \$FLANNEL_OPTIONS
ExecStartPost=/opt/kubernetes/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env
Restart=on-failure                              ## 重启策略[Install]
WantedBy=multi-user.targetEOFsystemctl daemon-reload
systemctl enable flanneld
systemctl restart flanneld

———————————————————————————————

3.开启flannel网络功能

[root@node01 bin]# ./flannel.sh https://192.168.10.10:2379,https://192.168.10.20:2379,https://192.168.10.30:2379Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-86V1PlYU-1605984203975)(C:\Users\LTP\AppData\Roaming\Typora\typora-user-images\1605973039103.png)]

4.配置docker连接 flannel

[root@localhost bin]# vim /usr/lib/systemd/system/docker.service          ##修改docker服务文件EnvironmentFile=/run/flannel/subnet.env              ## 添加这个环境配置文件
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/containerd.sock    ##在准启动项后面添加"$DOCKER_NETWORK_OPTIONS",在-H前面添加[root@localhost bin]# systemctl daemon-reload [root@localhost bin]# systemctl restart docker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EGJjZx3y-1605984203978)(C:\Users\LTP\AppData\Roaming\Typora\typora-user-images\1605973514472.png)]

——————————————————————————————

补充:

我们可以在flannel的网段划分的环境文件 /run/flannel/subnet.env 中查看到 $DOCKER_NETWORK_OPTIONS 这个变量的值

[root@localhost bin]# cat /run/flannel/subnet.env
DOCKER_OPT_BIP="--bip=172.17.37.1/24"
DOCKER_OPT_IPMASQ="--ip-masq=false"
DOCKER_OPT_MTU="--mtu=1450"
DOCKER_NETWORK_OPTIONS=" --bip=172.17.37.1/24 --ip-masq=false --mtu=1450"    
## 可以看到这个变量,设置了bip网桥地址,--ip-masq=false不进行地址伪装,--mtu=1450最大传输单元1450(最大值是1500)

flannelhi依据写入到etcd数据库的网段信息,进行子网划分,并将划分的网段信息写入到/run/flannel/subnet.env环境变量文件中。

——————————————————————————————

5.进行flannel 网络的测试,证明其路由功能

5.1 在node1节点创建容器

[root@node01 bin]# docker run -itd --name centos centos:7 /bin/bash

[root@node01 bin]# docker exec -it centos /bin/bash

[root@748e61b13bda /]# yum -y install net-tools

在这里插入图片描述

5.2 在node2节点创建容器

[root@node02 bin]# docker run -itd --name centos centos:7 /bin/bash

[root@node02 bin]# docker exec -it centos /bin/bash

[root@feb848f18a3a /]# yum -y install net-tools

在这里插入图片描述

三、部署master组件

master三部件:apiserver、controller-manager、scheduler

在master上操作

1.解压工具包

[root@master01 ~]# ls          ##从宿主机将软件包拿过来master.zip [root@master01 ~]# unzip master.zip    ##解压后获得三部件的脚本
Archive:  master.zipinflating: apiserver.sh            inflating: controller-manager.sh   inflating: scheduler.sh         [root@master01 ~]# ls *.sh
apiserver.sh  controller-manager.sh  scheduler.sh[root@master01 ~]# mv *.sh k8s/

2.创建kubernetes工作目录及证书目录

[root@master01 ~]#  mkdir /opt/kubernetes/{cfg,bin,ssl} -p
[root@master01 ~]# mkdir ~/k8s/k8s-cert

3.定义ca证书配置的json文件

[root@master01 ~]# cd ~/k8s/k8s-cert/
[root@master01 k8s-cert]# cat > ca-config.json <<EOF
{
"signing": {                      ## 签名,定义了签署的证书可以用于其他多个证书的申请"default": {"expiry": "87600h"             ## 签名有效期10年},"profiles": {                     ## 描述信息"kubernetes": {                 ## 服务名"expiry": "87600h",          ## 有效期10年"usages": [                  ## 使用说明,用法"signing",                ## 用于签名"key encipherment",       ## 加密秘钥"server auth",            ## 用于服务端认证"client auth"             ## 用于客户端认证]}}
}
}
EOF[root@master01 k8s-cert]# ls
ca-config.json

4.用于ca证书签发的请求文件

[root@master01 k8s-cert]# cat > ca-csr.json <<EOF
{"CN": "kubernetes",      ## 该证书的 User 为 "kubernetes""key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "Beijing","ST": "Beijing","O": "k8s",       ##kube-apiserver从证书中提取该字段作为请求用户所属的组 (Group);也可以是组织"OU": "System"}]
}
EOF[root@master01 k8s-cert]# ls
ca-config.json  ca-csr.json

5.生成kubernetes的ca证书

依赖于ca-csr.json(ca签发请求证书)来签发ca证书

[root@master01 k8s-cert]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -2020/11/22 08:40:06 [INFO] generating a new CA key and certificate from CSR
2020/11/22 08:40:06 [INFO] generate received request
2020/11/22 08:40:06 [INFO] received CSR
2020/11/22 08:40:06 [INFO] generating key: rsa-2048
2020/11/22 08:40:06 [INFO] encoded CSR
2020/11/22 08:40:06 [INFO] signed certificate with serial number 144724952924774536196355667686885693995953286118

6.用于请求服务端证书签发的请求文件

[root@master01 k8s-cert]# cat > server-csr.json <<EOF
{"CN": "kubernetes","hosts": ["10.0.0.1","127.0.0.1","192.168.10.10","192.168.10.40","192.168.10.100","192.168.10.50","192.168.10.60","kubernetes","kubernetes.default","kubernetes.default.svc","kubernetes.default.svc.cluster","kubernetes.default.svc.cluster.local"],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing","O": "k8s","OU": "System"}]
}
EOF[root@master01 k8s-cert]# ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem  server-csr.json

7.生成服务端ca证书

依赖于ca.pem(ca证书)、ca-key.pem(ca秘钥证书)、 ca-config.json(ca配置文件)来生成服务端证书

[root@master01 k8s-cert]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server2020/11/22 08:45:32 [INFO] generate received request……省略部分
specifically, section 10.2.3 ("Information Requirements").[root@master01 k8s-cert]# ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem  server.csr  server-csr.json  server-key.pem  server.pem

8.制作admin管理用户的证书请求文件

[root@master01 k8s-cert]# cat > admin-csr.json <<EOF
{"CN": "admin","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing","O": "system:masters","OU": "System"}]
}
EOF

9.生成admin的ca证书

[root@master01 k8s-cert]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin2020/11/22 08:55:02 [INFO] generate received request
2020/11/22 08:55:02 [INFO] received CSR
……省略部分
Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").[root@master01 k8s-cert]# ls
admin.csr       admin-key.pem  ca-config.json  ca-csr.json  ca.pem      server-csr.json  server.pem
admin-csr.json  admin.pem      ca.csr          ca-key.pem   server.csr  server-key.pem

10.制作用于proxy代理的ca证书请求文件

[root@master01 k8s-cert]# cat > kube-proxy-csr.json <<EOF
{"CN": "system:kube-proxy","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing","O": "k8s","OU": "System"}]
}
EOF

11.生成proxy的ca证书

同样依赖于ca.pem(ca证书)、ca-key.pem(ca秘钥证书)、 ca-config.json(ca配置文件)来生成proxy的证书

[root@master01 k8s-cert]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy2020/11/22 08:59:29 [INFO] generate received request
2020/11/22 08:59:29 [INFO] received CSR
……省略部分
(https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").[root@master01 k8s-cert]# ls
admin.csr       admin.pem       ca-csr.json  kube-proxy.csr       kube-proxy.pem   server-key.pem
admin-csr.json  ca-config.json  ca-key.pem   kube-proxy-csr.json  server.csr       server.pem
admin-key.pem   ca.csr          ca.pem       kube-proxy-key.pem   server-csr.json

12.查看K8S证书

批注:在宿主机内写了8个证书生成的汇总脚本,可以直接拿来用,不用一步一步来生成。

[root@master01 k8s-cert]#  ls *pem
admin-key.pem  admin.pem  ca-key.pem  ca.pem  kube-proxy-key.pem  kube-proxy.pem  server-key.pem  server.pem[root@master01 k8s-cert]# cp ca*pem server*pem /opt/kubernetes/ssl/[root@master01 k8s-cert]# ls /opt/kubernetes/ssl/
ca-key.pem  ca.pem  server-key.pem  server.pem

13.解压kubernetes压缩包

批注:压缩包下载在宿主机内,直接拿出来用

[root@master01 k8s]# tar zxvf kubernetes-server-linux-amd64.tar.gz

14.复制关键命令文件到/opt/kubernetes/bin/下

[root@master01 k8s]# cd /root/k8s/kubernetes/server/bin

[root@master01 bin]# cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/

15.制作token令牌文件

[root@localhost k8s]# cat > /opt/kubernetes/cfg/token.csv <<EOF
$(head -c 16 /dev/urandom | od -An -t x | tr -d ' '),kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
##使用 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 可以随机生成序列号[root@master01 ~]# cat  /opt/kubernetes/cfg/token.csv
89c3f368ad830f644d746b31e0b4554c,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
token令牌序列号                       用户名            id        角色

16.开启apiserver

二进制文件,token,证书都准备好,开启apiserver

[root@master01 ~]# cd /root/k8s/[root@master01 k8s]# bash apiserver.sh 192.168.10.10 https://192.168.10.10:2379,https://192.168.10.20:2379,https://192.168.10.30:2379Created symlink from /etc/systemd/system/multi-user.target.wants/kube-apiserver.service to /usr/lib/systemd/system/kube-apiserver.service.[root@master01 k8s]#  ps aux | grep kube    ##检查进程是否启动成功
root      43776 51.6  8.0 399676 312700 ?       Ssl  09:40   0:08 /opt/kubernetes/bin/kube-apiserver --logtostderr=true --v=4 --etcd-servers=https://192.168.10.10:2379,https://192.168.10.20:2379,https://192.168.10.30:2379 --bind-address=192.168.10.10 --secure-port=6443 --advertise-address=192.168.10.10 --allow-privileged=true --service-cluster-ip-range=10.0.0.0/24 ……省略部分
cafile=/opt/etcd/ssl/ca.pem --etcd-certfile=/opt/etcd/ssl/server.pem --etcd-keyfile=/opt/etcd/ssl/server-key.pem
root      43794  0.0  0.0 112660   968 pts/0    R+   09:41   0:00 grep --color=auto kube

17.查看配置文件

[root@master01 k8s]#  cat /opt/kubernetes/cfg/kube-apiserver KUBE_APISERVER_OPTS="--logtostderr=true \
--v=4 \
--etcd-servers=https://192.168.10.10:2379,https://192.168.10.20:2379,https://192.168.10.30:2379 \
--bind-address=192.168.10.10 \
--secure-port=6443 \
--advertise-address=192.168.10.10 \
--allow-privileged=true \
--service-cluster-ip-range=10.0.0.0/24 \
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \
--authorization-mode=RBAC,Node \
--kubelet-https=true \
--enable-bootstrap-token-auth \
--token-auth-file=/opt/kubernetes/cfg/token.csv \
--service-node-port-range=30000-50000 \
--tls-cert-file=/opt/kubernetes/ssl/server.pem  \
--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \
--client-ca-file=/opt/kubernetes/ssl/ca.pem \
--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \
--etcd-cafile=/opt/etcd/ssl/ca.pem \
--etcd-certfile=/opt/etcd/ssl/server.pem \
--etcd-keyfile=/opt/etcd/ssl/server-key.pem"

18.查看监听的https端口

[root@master01 k8s]# netstat -ntap | grep 6443
tcp        0      0 192.168.10.10:6443      0.0.0.0:*               LISTEN      43776/kube-apiserve 
tcp        0      0 192.168.10.10:39106     192.168.10.10:6443      ESTABLISHED 43776/kube-apiserve 
tcp        0      0 192.168.10.10:6443      192.168.10.10:39106     ESTABLISHED 43776/kube-apiserve 
[root@master01 k8s]# netstat -ntap | grep 8080
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      43776/kube-apiserve 

19.启动scheduler服务

[root@master01 k8s]# ./scheduler.sh 127.0.0.1Created symlink from /etc/systemd/system/multi-user.target.wants/kube-scheduler.service to /usr/lib/systemd/system/kube-scheduler.service.[root@master01 k8s]# ps aux | grep ku
……省略部分
/opt/kubernetes/bin/kube-apiserver --logtostderr=true --v=4 --etcd-servers=https://192.168.10.10:2379,https://192.168.10.20:2379,https://192.168.10.30:2379 --bind-address=192.168.10.10 --secure-port=6443 --advertise-address=192.168.10.10 --allow-privileged=true --service-cluster-ip-range=10.0.0.0/24 --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction --authorization-mode=RBAC,Node --kubelet-https=true --enable-bootstrap-token-auth --……省略部分

20.启动controller-manager

[root@master01 k8s]# bash controller-manager.sh 127.0.0.1Created symlink from /etc/systemd/system/multi-user.target.wants/kube-controller-manager.service to /usr/lib/systemd/system/kube-controller-manager.service.

21.查看master 节点状态

[root@master01 k8s]# /opt/kubernetes/bin/kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-1               Healthy   {"health":"true"}   
etcd-0               Healthy   {"health":"true"}   
etcd-2               Healthy   {"health":"true"}   

22.将kubelet 和 kube-proxy 两个国家scp给两个节点

也可以重新去节点解压压缩包获得者两个工具

[root@master01 bin]# cd /root/k8s/kubernetes/server/bin/[root@master01 bin]# scp kubelet kube-proxy root@192.168.10.20:/opt/kubernetes/bin/
root@192.168.10.20's password: 
kubelet                                100%  168MB  89.6MB/s   00:01    
kube-proxy                             100%   48MB  73.4MB/s   00:00    
[root@master01 bin]# scp kubelet kube-proxy root@192.168.10.30:/opt/kubernetes/bin/
root@192.168.10.30's password: 
kubelet                                100%  168MB 105.7MB/s   00:01    
kube-proxy                             100%   48MB  60.3MB/s   00:00    

在node01节点上部署

1.复制node.zip到/root目录下再解压

解压node.zip,获得kubelet.sh proxy.sh

[root@node01 ~]# unzip node.zip    ## 在宿主机上已下载,拿过来解压
Archive:  node.zipinflating: proxy.sh                inflating: kubelet.sh        

回到master上

1.拷贝kubeconfig.sh文件进行重命名

[root@master01 k8s]#  mkdir ~/k8s/kubeconfig
[root@master01 k8s]# cd kubeconfig/[root@master01 kubeconfig]# ls      ##直接从宿主机上复制过来
kubeconfig.sh

2.设置环境变量

[root@master01 kubeconfig]# export PATH=$PATH:/opt/kubernetes/bin/[root@master01 kubeconfig]# kubectl get cs     ##可以直接调用命令
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"}   
etcd-2               Healthy   {"health":"true"}   

3.生成配置文件

[root@master01 kubeconfig]# bash kubeconfig 192.168.10.10 /root/k8s/k8s-cert/
Cluster "kubernetes" set.
User "kubelet-bootstrap" set.
Context "default" created.
Switched to context "default".
Cluster "kubernetes" set.
User "kube-proxy" set.
Context "default" created.
Switched to context "default".[root@master01 kubeconfig]# ls  ##新生成了bootstrap.kubeconfig和kube-proxy.kubeconfig
bootstrap.kubeconfig  kubeconfig kube-proxy.kubeconfig

4.拷贝配置文件到node节点

[root@master01 kubeconfig]#  scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.10.20:/opt/kubernetes/cfg/root@192.168.10.20's password: 
bootstrap.kubeconfig                      100% 2167   508.1KB/s   00:00    
kube-proxy.kubeconfig                     100% 6269     3.8MB/s   00:00    [root@master01 kubeconfig]#  scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.10.30:/opt/kubernetes/cfg/root@192.168.10.30's password: 
bootstrap.kubeconfig                       100% 2167   573.4KB/s   00:00    
kube-proxy.kubeconfig                      100% 6269     4.9MB/s   00:00 

5.创建bootstrap角色赋予权限用于连接apiserver请求签名(关键)

[root@master01 kubeconfig]# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrapclusterrolebinding.rbac.authorization.k8s.io/kubelet-bootstrap created

在node01节点操作

1.启动kubelete服务

[root@node01 ~]# bash kubelet.sh 192.168.10.20
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.[root@node01 ~]# ps aux | grep kube    ##查看进程
……省略部分/opt/kubernetes/bin/kubelet --logtostderr=true --v=4 --hostname-override=192.168.10.20 --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig --bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig --config=/opt/kubernetes/cfg/kubelet.config --cert-dir=/opt/kubernetes/ssl --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
root      57316  0.0  0.0 112664   972 pts/0    S+   10:18   0:00 grep --color=auto kube

在node02节点操作

1.启动kubelete服务

[root@node02 ~]#  bash kubelet.sh 192.168.10.30
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.[root@node02 ~]# ps aux | grep kube   ##查看进程
……省略部分/opt/kubernetes/bin/kubelet --logtostderr=true --v=4 --hostname-override=192.168.10.30 --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig --bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig --config=/opt/kubernetes/cfg/kubelet.config --cert-dir=/opt/kubernetes/ssl --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
root      57315  0.0  0.0 112660   972 pts/0    S+   10:19   0:00 grep --color=auto kube

再回到master上操作

1.检查到node01节点的请求

[root@master01 kubeconfig]# kubectl get csr
NAME                                                   AGE     REQUESTOR           CONDITION
node-csr-2YNOTKwE2nhO3Tw5BzqbgGjbOm2F-LAfikONraRpgHY   3m28s   kubelet-bootstrap   Pending    
node-csr-aB3Un2TRV9mu7aHxCg1O6zbfWN5Uh95sVgtPUSD5RYA   3m20s   kubelet-bootstrap   Pending
##Pending(等待集群给该节点颁发证书),记录下分配给两个节点的编号
## node-csr-2YNOTKwE2nhO3Tw5BzqbgGjbOm2F-LAfikONraRpgHY
## node-csr-aB3Un2TRV9mu7aHxCg1O6zbfWN5Uh95sVgtPUSD5RYA

2.给该节点颁发证书

[root@master01 kubeconfig]# kubectl certificate approve node-csr-2YNOTKwE2nhO3Tw5BzqbgGjbOm2F-LAfikONraRpgHYcertificatesigningrequest.certificates.k8s.io/node-csr-2YNOTKwE2nhO3Tw5BzqbgGjbOm2F-LAfikONraRpgHY approved[root@master01 kubeconfig]# kubectl certificate approve node-csr-aB3Un2TRV9mu7aHxCg1O6zbfWN5Uh95sVgtPUSD5RYAcertificatesigningrequest.certificates.k8s.io/node-csr-aB3Un2TRV9mu7aHxCg1O6zbfWN5Uh95sVgtPUSD5RYA approved

3.继续查看证书状态

[root@master01 kubeconfig]# kubectl get csr
NAME                                                   AGE     REQUESTOR           CONDITION
node-csr-2YNOTKwE2nhO3Tw5BzqbgGjbOm2F-LAfikONraRpgHY   8m6s    kubelet-bootstrap   Approved,Issued
node-csr-aB3Un2TRV9mu7aHxCg1O6zbfWN5Uh95sVgtPUSD5RYA   7m58s   kubelet-bootstrap   Approved,Issued
## Approved,Issued 状态变为被认可,已发布状态(已经被允许加入群集)

4.查看群集节点,成功加入的节点

[root@master01 kubeconfig]# kubectl get node
NAME            STATUS   ROLES    AGE     VERSION
192.168.10.20   Ready    <none>   3m50s   v1.12.3
192.168.10.30   Ready    <none>   3m38s   v1.12.3

到node01节点操作

1.启动proxy服务

[root@node01 ~]# bash proxy.sh 192.168.10.20
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.[root@node02 ~]# systemctl status kube-proxy.service 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iwtjSWXF-1605984203984)(C:\Users\LTP\AppData\Roaming\Typora\typora-user-images\1605983674452.png)]

到node01节点操作

1.启动proxy服务

[root@node02 ~]# bash proxy.sh 192.168.10.30Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.[root@node02 ~]# systemctl status kube-proxy.service 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chpmqSOD-1605984203985)(C:\Users\LTP\AppData\Roaming\Typora\typora-user-images\1605983491987.png)]

RYA approved

#### 3.继续查看证书状态```bash
[root@master01 kubeconfig]# kubectl get csr
NAME                                                   AGE     REQUESTOR           CONDITION
node-csr-2YNOTKwE2nhO3Tw5BzqbgGjbOm2F-LAfikONraRpgHY   8m6s    kubelet-bootstrap   Approved,Issued
node-csr-aB3Un2TRV9mu7aHxCg1O6zbfWN5Uh95sVgtPUSD5RYA   7m58s   kubelet-bootstrap   Approved,Issued
## Approved,Issued 状态变为被认可,已发布状态(已经被允许加入群集)

4.查看群集节点,成功加入的节点

[root@master01 kubeconfig]# kubectl get node
NAME            STATUS   ROLES    AGE     VERSION
192.168.10.20   Ready    <none>   3m50s   v1.12.3
192.168.10.30   Ready    <none>   3m38s   v1.12.3

到node01节点操作

1.启动proxy服务

[root@node01 ~]# bash proxy.sh 192.168.10.20
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.[root@node02 ~]# systemctl status kube-proxy.service 

[外链图片转存中...(img-iwtjSWXF-1605984203984)]

到node01节点操作

1.启动proxy服务

[root@node02 ~]# bash proxy.sh 192.168.10.30Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.[root@node02 ~]# systemctl status kube-proxy.service 

[外链图片转存中...(img-chpmqSOD-1605984203985)]

http://www.jmfq.cn/news/5272651.html

相关文章:

  • 怎么做淘宝网站赚钱技巧/竞价排名采用什么计费方式
  • 网站的域名分为哪些/珠海百度seo
  • 湛江网站设计/灯塔网站seo
  • 网站用什么做备份/seo策略分析
  • 做亚马逊运营要看哪些网站/b站怎么推广
  • 设计网站的一般过程/产品推广活动策划方案
  • 江门网站开发/成免费的crm
  • 娱乐彩票网站建设制作/手机百度电脑版入口
  • 做企业网站设计价格是多少/网络营销比较常用的营销模式
  • wp网站打开太慢怎么做优化/合肥网络公司排名
  • 网站添加悬浮二维码/视频外链平台
  • 港湾有巢网站建设/热点事件
  • 金华电子商务网站建设/seo sem是什么意思
  • 企业网站 源代码/口红的推广软文
  • 手机如何做车载mp3下载网站/爱站长工具
  • 专门做餐饮ppt的网站/搜索引擎分类
  • 快速网站开发框架/百度怎么推广
  • wordpress 插件出错/站长之家seo查询官方网站
  • 多模室内设计网站/自动点击器
  • 网站建设能赚钱吗/合肥网络优化推广公司
  • 互联网与网站有哪些/搜索优化seo
  • 包装设计教程/上海网络优化服务
  • 昌吉网站建设哪家便宜/seo优化行业
  • 营销类网站建营销类网站建设/义乌最好的电商培训学校
  • 中英 网站模板 带手机版/营销软件网
  • 展示型网站开发/会员制营销方案
  • 微信公众号 做不了微网站吗/环球资源网官方网站
  • 有专门做房孑特卖的网站吗/seo搜索引擎优化课程
  • 医药网站建设方案/东莞关键词优化推广
  • 网站输入一级域名自动跳转二级域名/百度网盘客服电话人工服务