5,部署edct
把三个etcd放到三个服务器root下
解压后生成一文件一目录
1,
2,
修改配置文件
这是配置单节点的
etcd_name:etcd名称
ETCD_DATA_DIR:数据库位置
ETCD_LISTEN_PEER_URLS:用于监听其他edct的
ETCD_LISTEN_CLIENT_URLS:用于监听edct以外的其他如master节点
这是集群
ETCD_INITIAL_CLUSTER:记录所有edct名称和端口号
3,刚才生成的证书复制到etcd下
###alias可以看到当前系统下的命令和命令别名
进行node1,和node2 edct的部署
回到node1上操作
node2操作
4,依次启动etcd
卡在这就对了。。。说明在等待其他edct启动
三个依次使用这个命令后。启动成功
设置永久启动
可以通过这个命令来检查edct集群。。。是否正常状态
/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://192.168.1.106:2379,https://192.168.1.105:2379,https://192.168.1.107:2379" cluster-health
这样算正常edct集群配置成功
6,部署master
apiserver证书的配置
1,解压缩
生成三个文件,一个目录
mv kube-apiserver.service kube-controller-manager.service kube-scheduler.service /usr/lib/systemd/system/
mv kubernetes /opt/
cp /root/TLS/k8s/{ca*pem,server.pem,server-key.pem} /opt/kubernetes/ssl/ -rvf
修改conf文件
修改
其他不用改
log-dir=/opt/kubernetes/logs \ 日志文件地址
etcd-servers=https://192.168.1.106:2379,https://192.168.1.105:2379,https://192.168.1.107:2379 \ 所有etcd节点端口
bind-address=192.168.1.106 \ 当前master监听的地址
secure-port=6443 \ 当前监听的端口
advertise-address=192.168.1.106 \ 通告地址
allow-privileged=true \ 是否设置超级管理员权限来创建容器
service-cluster-ip-range=10.0.0.0/24 \ service调度服务生成到的虚拟网络
enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \ 可以使用的插件
authorization-mode=RBAC,Node \ 授权模式
enable-bootstrap-token-auth=true \ 基于token自动颁发证书
token-auth-file=/opt/kubernetes/cfg/token.csv \ 基于特定用户颁发证书
service-node-port-range=30000-32767 \ service网段暴露的服务端口范围
kubelet-client-certificate=/opt/kubernetes/ssl/server.pem
–kubelet-client-key=/opt/kubernetes/ssl/server-key.pem \ 访问kubelet所使用的证书
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 \ 基于https访问apiserver的时候使用的证书
etcd-cafile=/opt/etcd/ssl/ca.pem
–etcd-certfile=/opt/etcd/ssl/server.pem
–etcd-keyfile=/opt/etcd/ssl/server-key.pem \ 访问etcd所使用的证书
audit-log-maxage=30
–audit-log-maxbackup=3
–audit-log-maxsize=100
–audit-log-path=/opt/kubernetes/logs/k8s-audit.log" 日志相关内容
2,controller-manager配置文件
allocate-node-cidrs=true \ 是否支持网络插件
不用改
3,schaduler.conf
也不用改
可以看到这三个文件
启动master节点
检测有无启动起来
也可以查看日志打印是否正确
查看节点信息
4,配置tls 基于bootstrap自动颁发证书
第一个要为true。第二个要对这个路径的文件进行授权
对这个
中的这个
进行授权(第一次配错了,我这里换成strap2)
kubectl create clusterrolebinding kubelet-bootstrap2 \
--clusterrole=system:node-bootstrapper \
--user=kubelet-bootstrap2
代表授权成功
7,安装node节点
docker
主要三个。。。安装这三个
1,worker node节点安装docker
先在master节点把node的tar包传到两个worker中
2,解压缩
3,ls
4,移动管理脚本
5,解压缩docker二进制文件
6,将docker下的所有文件放到bin下
7,启动docker
worker节点的docker版本号跟k8s要对应
kubelet
1,
2,修改配置文件
server这里改成master节点的端口
这里是worker节点主机名
这里不需要改
这里也不需要改
#####高并发这里要改,kubelet-config.yml文件,
最大打开文件数。 最大承受pod数
这里改成当前主机的名称
改这里的master的地址
3,从master节点复制证书到worker节点
4,启动kubelet和kube-proxy服务
5,查看启动日志
没有明显错误就可以了
6,在master节点为worker节点颁发证书
把前面那段英文复制下来
再看下csr就是已颁发状态
7,颁发完证书后在master节点就可以执行这个命令了
出现这个代表成功,worker已加入到master里面了
8,worker2同理
node节点安装完毕
8,node节点进阶
###########安装网络插件
1,确认启动CNI
必须是CNI
能看到则正常
2,生成两个目录
3,找到
离线安装
4,在master节点上执行yaml脚本文件,实现worker节点网络插件功能
用这个命令查看是否下载镜像,启动完容器
再看node1已经变成ready状态了
node2,如果一直没变ready可以重启node2节点,不是大问题
5,授权apiserver访问kubelet
到此为止node节点配置好了。但是node2,还是没变ready
找到原因了,node2没有做第二步操作
再回到master
#####nginx
或者worker节点下
先配置加速镜像
systemctl restart docker
worker2
镜像转变tar包
保存到当前位置
放到node1里
tar包 导入到docker镜像
启动nginx容器
通过master节点启动docker容器
这两个命令都可以查看容器有没启动起来
现在容器已经启动了。不知道是工作在worker1还是worker2
说明运行在k8s-node1节点上了
再启动一个nginx容器
再启动一个
看一下newweb和testweb分别运行在哪个节点下
可以看到1个在node1,一个在node2
2,暴露端口
就是端口映射
这时候可能不能直接访问web页面
可以在虚拟机上访问nginx
如果curl命令使用不了
####3,web组件
官方的dashboard,,,安装速度特别慢。。网络不好最好不用
等4,5个钟把
必须用https来访问
换浏览器吧
挺不好用的现在看第三方的
kuboard
放到worker1的root下
也放到worker2的root下
还有这个放到master下
1,docker加载tar包
2,回到master节点
不要立马执行start_kuboard.yaml文件。要修改配置
你希望kuboard运行在哪个工作节点上?
查看是否运行成功
查看暴露端口
生成token的方式
kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d
生成token复制的位置
进入默认名称空间
就是刚才创建的那三个docker容器