[kubernetes]4-3 高可用集群部署(下)

4-3 高可用集群部署(下)

6.3 创建service文件

# scp配置文件到每个master节点

$ scp /root/kubernetes-ha-binary/target/services/kube-controller-manager.service <user>@<node-ip>:/etc/systemd/system/

 

6.4 启动服务

# 依次启动服务

$ systemctl daemon-reload && systemctl enable kube-controller-manager && systemctl restart kube-controller-manager

 

# 检查状态

$ service kube-controller-manager status

 

# 查看日志

$ journalctl -f -u kube-controller-manager

这里如果出现报错 需要等待一会 或者重启试试 一开始master02 和master03 有报错.可能是我再windows上起的虚拟机的缘故

 

后来master02好了 但是可能网络问题 master03 偶尔还是会报错

 

 

# 查看leader

$ kubectl get endpoints kube-controller-manager --namespace=kube-system -o yaml

 

7. 部署scheduler(master节点)

scheduler启动后将通过竞争选举机制产生一个 leader 节点,其它节点为阻塞状态。当 leader 节点不可用后,剩余节点将再次进行选举产生新的 leader 节点,从而保证服务的可用性。

7.1 创建证书和私钥

# 生成证书、私钥

$ cd /root/kubernetes-ha-binary/target/pki/scheduler

$ cfssl gencert -ca=../ca.pem \

  -ca-key=../ca-key.pem \

  -config=../ca-config.json \

  -profile=kubernetes scheduler-csr.json | cfssljson -bare kube-scheduler

7.2 创建scheduler的kubeconfig

# 创建kubeconfig

$ kubectl config set-cluster kubernetes \

  --certificate-authority=../ca.pem \

  --embed-certs=true \

  --server=https://<MASTER_VIP>:6443 \

  --kubeconfig=kube-scheduler.kubeconfig

 

$ kubectl config set-credentials system:kube-scheduler \

  --client-certificate=kube-scheduler.pem \

  --client-key=kube-scheduler-key.pem \

  --embed-certs=true \

  --kubeconfig=kube-scheduler.kubeconfig

 

$ kubectl config set-context system:kube-scheduler \

  --cluster=kubernetes \

  --user=system:kube-scheduler \

  --kubeconfig=kube-scheduler.kubeconfig

 

$ kubectl config use-context system:kube-scheduler --kubeconfig=kube-scheduler.kubeconfig

 

# 分发kubeconfig

$ scp kube-scheduler.kubeconfig <user>@<node-ip>:/etc/kubernetes/

 

7.3 创建service文件

# scp配置文件到每个master节点

$ scp /root/kubernetes-ha-binary/target/services/kube-scheduler.service <user>@<node-ip>:/etc/systemd/system/

 

7.4 启动服务

# 启动服务

$ systemctl daemon-reload && systemctl enable kube-scheduler && systemctl restart kube-scheduler

 

# 检查状态

$ service kube-scheduler status

 

# 查看日志

$ journalctl -f -u kube-scheduler

 

# 查看leader

$ kubectl get endpoints kube-scheduler --namespace=kube-system -o yaml

8. 部署kubelet(worker节点)

8.1 预先下载需要的镜像

# 预先下载镜像到所有节点(由于镜像下载的速度过慢,我给大家提供了阿里云仓库的镜像)

$ scp /root/kubernetes-ha-binary/target/configs/download-images.sh <user>@<node-ip>:~

 

# 在目标节点上执行脚本下载镜像

$ sh ~/download-images.sh

 

8.2 创建bootstrap配置文件

# 创建 token

$ cd /root/kubernetes-ha-binary/target/pki/admin

$ export BOOTSTRAP_TOKEN=$(kubeadm token create \

      --description kubelet-bootstrap-token \

      --groups system:bootstrappers:worker \

      --kubeconfig kube.config)

     

# 设置集群参数

$ kubectl config set-cluster kubernetes \

      --certificate-authority=../ca.pem \

      --embed-certs=true \

      --server=https://<MASTER_VIP>:6443 \

      --kubeconfig=kubelet-bootstrap.kubeconfig

 

# 设置客户端认证参数

$ kubectl config set-credentials kubelet-bootstrap \

      --token=${BOOTSTRAP_TOKEN} \

      --kubeconfig=kubelet-bootstrap.kubeconfig

 

# 设置上下文参数

$ kubectl config set-context default \

      --cluster=kubernetes \

      --user=kubelet-bootstrap \

      --kubeconfig=kubelet-bootstrap.kubeconfig

 

# 设置默认上下文

$ kubectl config use-context default --kubeconfig=kubelet-bootstrap.kubeconfig

 

# 先在worker节点上创建目录

$ mkdir -p /etc/kubernetes/pki

 

# 把生成的配置copy到每个worker节点上

$ scp kubelet-bootstrap.kubeconfig <user>@<node-ip>:/etc/kubernetes/kubelet-bootstrap.kubeconfig

 

# 把ca分发到每个worker节点

$ scp /root/kubernetes-ha-binary/target/pki/ca.pem <user>@<node-ip>:/etc/kubernetes/pki/

8.3 kubelet配置文件

把kubelet配置文件分发到每个worker节点上

$ scp /root/kubernetes-ha-binary/target/worker-<node-ip>/kubelet.config.json <user>@<node-ip>:/etc/kubernetes/

 

8.4 kubelet服务文件

把kubelet服务文件分发到每个worker节点上

$ scp /root/kubernetes-ha-binary/target/worker-<node-ip>/kubelet.service <user>@<node-ip>:/etc/systemd/system/

 

8.5 启动服务

kublet 启动时查找配置的 --kubeletconfig 文件是否存在,如果不存在则使用 --bootstrap-kubeconfig 向 kube-apiserver 发送证书签名请求 (CSR)。

 kube-apiserver 收到 CSR 请求后,对其中的 Token 进行认证(事先使用 kubeadm 创建的 token),认证通过后将请求的 user 设置为 system:bootstrap:,group 设置为 system:bootstrappers,这就是Bootstrap Token Auth。

# bootstrap附权 在master01上做

$ kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --group=system:bootstrappers

 

# 启动服务

$ mkdir -p /var/lib/kubelet

$ systemctl daemon-reload && systemctl enable kubelet && systemctl restart kubelet

 

 

 

# 在master上查看并Approve bootstrap请求

$ kubectl get csr

 

$ kubectl certificate approve <name>

 

# 查看服务状态

$ service kubelet status

 

# 查看日志  会查看到网络插件的

$ journalctl -f -u kubelet

 

9. 部署kube-proxy(worker节点)

9.1 创建证书和私钥

$ cd /root/kubernetes-ha-binary/target/pki/proxy

$ cfssl gencert -ca=../ca.pem \

  -ca-key=../ca-key.pem \

  -config=../ca-config.json \

  -profile=kubernetes  kube-proxy-csr.json | cfssljson -bare kube-proxy

9.2 创建和分发 kubeconfig 文件

# 创建kube-proxy.kubeconfig

$ kubectl config set-cluster kubernetes \

  --certificate-authority=../ca.pem \

  --embed-certs=true \

  --server=https://<master-vip>:6443 \

  --kubeconfig=kube-proxy.kubeconfig

$ kubectl config set-credentials kube-proxy \

  --client-certificate=kube-proxy.pem \

  --client-key=kube-proxy-key.pem \

  --embed-certs=true \

  --kubeconfig=kube-proxy.kubeconfig

$ kubectl config set-context default \

  --cluster=kubernetes \

  --user=kube-proxy \

  --kubeconfig=kube-proxy.kubeconfig

$ kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig

 

# 分发kube-proxy.kubeconfig

$ scp kube-proxy.kubeconfig <user>@<node-ip>:/etc/kubernetes/

9.3 分发kube-proxy.config

$ scp /root/kubernetes-ha-binary/target/worker-<node-ip>/kube-proxy.config.yaml <user>@<node-ip>:/etc/kubernetes/

9.4 分发kube-proxy服务文件

$ scp /root/kubernetes-ha-binary/target/services/kube-proxy.service <user>@<node-ip>:/etc/systemd/system/

 

9.5 启动服务

# 创建依赖目录

$ mkdir -p /var/lib/kube-proxy && mkdir -p /var/log/kubernetes

 

# 启动服务

$ systemctl daemon-reload && systemctl enable kube-proxy && systemctl restart kube-proxy

 

# 查看状态

$ service kube-proxy status

 

# 查看日志

$ journalctl -f -u kube-proxy

 

10. 部署CNI插件 - calico

我们使用calico官方的安装方式来部署。

# 创建目录(在配置了kubectl的节点上执行)

$ mkdir -p /etc/kubernetes/addons

 

# 上传calico配置到配置好kubectl的节点(一个节点即可)

$ scp /root/kubernetes-ha-binary/target/addons/calico* <user>@<node-ip>:/etc/kubernetes/addons/

 

# 部署calico

$ kubectl create -f /etc/kubernetes/addons/calico-rbac-kdd.yaml

$ kubectl create -f /etc/kubernetes/addons/calico.yaml

 

# 查看状态

$ kubectl get pods -n kube-system

 

11. 部署DNS插件 - coredns

# 上传配置文件

$ scp /root/kubernetes-ha-binary/target/addons/coredns.yaml <user>@<node-ip>:/etc/kubernetes/addons/

 

# 部署coredns

$ kubectl create -f /etc/kubernetes/addons/coredns.yaml

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值