k8s的安装方式选择
官方提供了三种方式
minikube:快速在本地运行一个单点的k8s,主要提供给开发测试使用
kubeadm:推荐,提供kubeadm init和kubeadm join,快速部署Kubernetes,这种方式会把组件自动化部署在pod中
二进制:从官方下载二进制包,手动部署每个组件,能够更清晰了解k8s各个组件之间的关系
环境说明
1 | CentOS Linux release 7.9.2009 |
k8s权限与自签发SSL证书说明
apiserver与kubelet通信通过https,etcd和flannel通信也是通过https,所以要做自签发证书
etcd与flannal
etcd——ca.pem server.pem server-key.pem
flannel——ca.pem server.pem server-key.pem
apiserver与kubelet
kube-apiserver——ca.pem server.prm server-key.pem
kubelet——ca.pem ca-key.pem
除此之外,需要apiserver对kubelet进行Rolebinding授权、定义额外的KubeletConfiguration,并且在kubelet启动时附带这些参数
环境初始化
1 | # |
部署etcd
生成ETCD自签发证书
1 | #准备证书生成工具 |
部署etcd集群
etcd版本etcd-v3.3.10
准备工作(三台)
1 | #创建etcd相关文件夹 |
写入配置文件
etcd.sh
1 |
|
ETCD集群初始化与验证
1 | 三台同时启动etcd.sh |
部署flannal网络
准备工作
1 | 1.在etcd中写入,分配子网给flannal |
部署flannal
1 | #使用systemd管理flannal与docker |
部署Master节点组件
apiserver组件
生成证书
1 | mkdir /opt/kubernetes/{bin,cfg,ssl} -p |
部署组件
1 | # 下载kubernetes-server-linux-amd64.tar.gz |
kube-scheduler组件
1 | # 配置参数 |
kube-controller-manager组件
1 | # 准备配置文件 |
部署Node节点组件
权限配置(master节点做)
1 | 1.将kubelet-bootstrap用户绑定到系统角色 |
部署kubelet
第一个node节点 192.168.10.145为例
1 | # 准备配置文件(kubelet启动参数) |
使用systemd管理kubelet
1 | cat >/usr/lib/systemd/system/kubelet.service <<'EOF' |
部署kube-proxy
1 | cat >/opt/kubernetes/cfg/kube-proxy <<EOF |
此时在主节点使用kubectl get csr
可以看到待加入节点的信息
使用kubectl approve <节点名> 就可以对节点进行添加