scp命令 二进制_010 使用二进制文件安装kubernetes1.15集群之部署slave节点

大家国庆节快乐!

ececc92a03cd7e7ebd740aa5557d329a.png

昨天分享了《009 使用二进制文件安装kubernetes1.15集群之部署 master 节点》今天我们来学习二进制部署k8s集群的最后的部分,slave节点的部署。

开始部署slave节点

仍然在master节点上操作!!这里把master节点也算作在node节点之内kubernetes work 节点运行如下组件:dockerkubeletkube-proxy

首先将server的二进制压缩包解压后的二进制命令拷贝到所有节点:

[root@k8s-1 ~]# cd /data/install/kubernetes/server/bin/[root@k8s-1 bin]# scp kubelet kube-proxy k8s-1:/cloud/k8s/kubernetes/bin/[root@k8s-1 bin]# scp kubelet kube-proxy k8s-2:/cloud/k8s/kubernetes/bin/[root@k8s-1 bin]# scp kubelet kube-proxy k8s-3:/cloud/k8s/kubernetes/bin/
  • 部署 kubelet 组件

kublet 运行在每个 worker 节点上,接收 kube-apiserver 发送的请求,管理 Pod 容器,执行交互式命令,如exec、run、logs 等;kublet 启动时自动向 kube-apiserver 注册节点信息,内置的 cadvisor 统计和监控节点的资源使用情况;为确保安全,本文档只开启接收 https 请求的安全端口,对请求进行认证和授权,拒绝未授权的访问(如apiserver、heapster)。

下边创建三个kubeconfig文件

注意BOOTSTRAP_TOKEN=562c96dba17c1753416ed9643de03757 是 在部署apiserver的token时执行”head -c 16 /dev/urandom | od -An -t x | tr -d ' '“命令生成的!!!不要照抄我这里的!这是个坑!

创建 kubelet bootstrap.kubeconfig 文件

通过 执行environment.sh脚本获取 bootstrap.kubeconfig 配置文件。

cd /data/ssl_config/kubernetes/[root@k8s-1 kubernetes]# pwd/data/ssl_config/kubernetes[root@k8s-1 kubernetes]# cat environment.sh# 创建kubelet bootstrapping kubeconfigBOOTSTRAP_TOKEN=562c96dba17c1753416ed9643de03757KUBE_APISERVER="https://192.168.10.23:6443"# 设置集群参数kubectl config set-cluster kubernetes --certificate-authority=./ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=bootstrap.kubeconfig# 设置客户端认证参数kubectl config set-credentials kubelet-bootstrap --token=${BOOTSTRAP_TOKEN} --kubeconfig=bootstrap.kubeconfig# 设置上下文参数kubectl config set-context default --cluster=kubernetes --user=kubelet-bootstrap --kubeconfig=bootstrap.kubeconfig# 设置默认上下文kubectl config use-context default --kubeconfig=bootstrap.kubeconfig执行脚本[root@k8s-1 kubernetes]# sh ./environment.sh

创建 kubelet.kubeconfig 文件

通过 执行envkubelet.kubeconfig.sh脚本获取 kubelet.kubeconfig配置文件。

[root@k8s-1 kubernetes]# pwd/data/ssl_config/kubernetes[root@k8s-1 kubernetes]# cat envkubelet.kubeconfig.sh# 创建kubelet bootstrapping kubeconfigBOOTSTRAP_TOKEN=562c96dba17c1753416ed9643de03757KUBE_APISERVER="https://192.168.10.23:6443"# 设置集群参数kubectl config set-cluster kubernetes --certificate-authority=./ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kubelet.kubeconfig# 设置客户端认证参数kubectl config set-credentials kubelet --token=${BOOTSTRAP_TOKEN} --kubeconfig=kubelet.kubeconfig# 设置上下文参数kubectl config set-context default --cluster=kubernetes --user=kubelet --kubeconfig=kubelet.kubeconfig# 设置默认上下文kubectl config use-context default --kubeconfig=kubelet.kubeconfig执行脚本[root@k8s-1 kubernetes]# sh ./envkubelet.kubeconfig.sh

创建kube-proxy kubeconfig文件

通过 执行env_proxy.sh脚本获取 kube-proxy.kubeconfig配置文件。

[root@k8s-1 kubernetes]# pwd/data/ssl_config/kubernetes[root@k8s-1 kubernetes]# cat env_proxy.sh# 创建kube-proxy kubeconfig文件BOOTSTRAP_TOKEN=562c96dba17c1753416ed9643de03757KUBE_APISERVER="https://192.168.10.23:6443"# 设置集群参数kubectl config set-cluster kubernetes --certificate-authority=./ca.pem --embed-certs=true --server=${KUBE_APISERVER} --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执行脚本[root@k8s-1 kubernetes]# sh ./env_proxy.sh

生成三个kubeconfig文件

68b5009ba2eb3fe86a6c575f4b5c9f65.png

将bootstrap kubeconfig kube-proxy.kubeconfig 文件拷贝到所有slave节点

[root@k8s-1 kubernetes]# pwd/data/ssl_config/kubernetes[root@k8s-1 kubernetes]# scp -rp bootstrap.kubeconfig kube-proxy.kubeconfig k8s-1:/cloud/k8s/kubernetes/cfg/[root@k8s-1 kubernetes]# scp -rp bootstrap.kubeconfig kube-proxy.kubeconfig k8s-2:/cloud/k8s/kubernetes/cfg/[root@k8s-1 kubernetes]# scp -rp bootstrap.kubeconfig kube-proxy.kubeconfig k8s-3:/cloud/k8s/kubernetes/cfg/
  • 创建kubelet 参数配置模板文件

注意:address: 192.168.10.23,这个参数写本节点的IP,各不相同。拷贝到其他节点要注意!!

[root@k8s-1 ~]# cat /cloud/k8s/kubernetes/cfg/kubelet.configkind: KubeletConfigurationapiVersion: kubelet.config.k8s.io/v1beta1address: 192.168.10.23port: 10250readOnlyPort: 10255cgroupDriver: cgroupfsclusterDomain: cluster.local.failSwapOn: falseauthentication:anonymous:enabled: true

创建kubelet配置文件

[root@k8s-1 ~]# cat /cloud/k8s/kubernetes/cfg/kubeletKUBELET_OPTS="--logtostderr=true --v=4 --hostname-override=k8s-1 --kubeconfig=/cloud/k8s/kubernetes/cfg/kubelet.kubeconfig --bootstrap-kubeconfig=/cloud/k8s/kubernetes/cfg/bootstrap.kubeconfig --config=/cloud/k8s/kubernetes/cfg/kubelet.config --cert-dir=/cloud/k8s/kubernetes/ssl --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"

创建kubelet systemd unit 服务文件

[root@k8s-1 ~]# cat /usr/lib/systemd/system/kubelet.service[Unit]Description=Kubernetes KubeletAfter=docker.serviceRequires=docker.service[Service]EnvironmentFile=/cloud/k8s/kubernetes/cfg/kubeletExecStart=/cloud/k8s/kubernetes/bin/kubelet $KUBELET_OPTSRestart=on-failureKillMode=process[Install]WantedBy=multi-user.target

将刚创建的kubelet.config、kubelet、kubelet.service文件拷贝到所有 nodes节点,包括master

不写脚本了,直接上命令吧:注意:kubelet.config文件的address: 192.168.10.23,这个参数写本节点的IP,各不相同。拷贝到其他节点要注意!!

#k8s-1节点[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kubelet.config root@k8s-1:/cloud/k8s/kubernetes/cfg/kubelet.config[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kubelet root@k8s-1:/cloud/k8s/kubernetes/cfg/kubelet[root@k8s-1 ~]# scp /usr/lib/systemd/system/kubelet.service root@k8s-1:/usr/lib/systemd/system/kubelet.service#k8s-2节点[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kubelet.config root@k8s-2:/cloud/k8s/kubernetes/cfg/kubelet.config[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kubelet root@k8s-2:/cloud/k8s/kubernetes/cfg/kubelet[root@k8s-1 ~]# scp /usr/lib/systemd/system/kubelet.service root@k8s-2:/usr/lib/systemd/system/kubelet.service#k8s-3节点[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kubelet.config root@k8s-3:/cloud/k8s/kubernetes/cfg/kubelet.config[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kubelet root@k8s-3:/cloud/k8s/kubernetes/cfg/kubelet[root@k8s-1 ~]# scp /usr/lib/systemd/system/kubelet.service root@k8s-3:/usr/lib/systemd/system/kubelet.service

将kubelet-bootstrap用户绑定到系统集群角色

[root@k8s-1 ~]# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap

启动kubelet服务

在各个节点上都要启动执行:

[root@k8s-1 ~]# systemctl daemon-reload && systemctl enable kubelet && systemctl restart kubelet
d33f9763f5d00b5bc50c138e586ba8dc.png

批准 kubelet 签名请求文件 请求

[root@k8s-1 ~]# kubectl get csr |head -2NAME AGE REQUESTOR CONDITIONnode-csr-yCn3MIUz-luhqwEVva1haugCmoz48ykxU7x4er3pfQs 44s kubelet-bootstrap Pending#看csr,仍然是pending状态,需要批准以下,$NAME就是csr的name。[root@k8s-1 ~]# kubectl get csr | grep Pending | awk '{print $1}' | xargs kubectl certificate approve[root@k8s-1 ~]# kubectl get csrcsr 状态变为 Approved,Issued 即可

查看集群状态

6e05c8be318b9b645b2a131cc9dfaff4.png
  • 部署 node节点 kube-proxy 组件

在master上执行操作。kube-proxy 运行在所有 node节点上,它监听 apiserver 中 service 和 Endpoint 的变化情况,创建路由规则来进行服务负载均衡。

创建kube-proxy配置文件

集群cidr: --cluster-cidr=10.96.0.0/12

[root@k8s-1 ~]# cat /cloud/k8s/kubernetes/cfg/kube-proxyKUBE_PROXY_OPTS="--logtostderr=true --v=4 --hostname-override=k8s-1 --cluster-cidr=10.96.0.0/12 --kubeconfig=/cloud/k8s/kubernetes/cfg/kube-proxy.kubeconfig"

创建kube-proxy systemd unit 服务文件

[root@k8s-1 ~]# cat /usr/lib/systemd/system/kube-proxy.service[Unit]Description=Kubernetes ProxyAfter=network.target[Service]EnvironmentFile=/cloud/k8s/kubernetes/cfg/kube-proxyExecStart=/cloud/k8s/kubernetes/bin/kube-proxy $KUBE_PROXY_OPTSRestart=on-failure[Install]WantedBy=multi-user.target

将刚创建的kube-proxy文件和kube-proxy.service文件拷贝到所有slave节点,包含maser

#k8s-1节点[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kube-proxy root@k8s-1:/cloud/k8s/kubernetes/cfg/kube-proxy[root@k8s-1 ~]# scp /usr/lib/systemd/system/kube-proxy.service root@k8s-1:/usr/lib/systemd/system/kube-proxy.service#k8s-2节点[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kube-proxy root@k8s-2:/cloud/k8s/kubernetes/cfg/kube-proxy[root@k8s-1 ~]# scp /usr/lib/systemd/system/kube-proxy.service root@k8s-2:/usr/lib/systemd/system/kube-proxy.service#k8s-3节点[root@k8s-1 ~]# scp /cloud/k8s/kubernetes/cfg/kube-proxy root@k8s-3:/cloud/k8s/kubernetes/cfg/kube-proxy[root@k8s-1 ~]# scp /usr/lib/systemd/system/kube-proxy.service root@k8s-3:/usr/lib/systemd/system/kube-proxy.service

在所有节点启动kube-proxy服务

[root@k8s-1 ~]# systemctl daemon-reload && systemctl enable kube-proxy && systemctl restart kube-proxy && systemctl status kube-proxy
5a7d9a521d7e01ce27693841b7c92251.png

关于以二进制文件的方式部署kubernetes集群到此先告一段落了,其中难免有不妥的地方,希望大家指正共同学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值