创建kubelet配置

  1. set-cluster # 创建需要连接的集群信息,可以创建多个k8s集群信息
  2. [root@hdss7-21 ~]# kubectl config set-cluster myk8s \
  3. --certificate-authority=/opt/apps/kubernetes/server/bin/certs/ca.pem \
  4. --embed-certs=true \
  5. --server=https://10.4.7.10:7443 \
  6. --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig
  7. set-credentials # 创建用户账号,即用户登陆使用的客户端私有和证书,可以创建多个证书
  8. [root@hdss7-21 ~]# kubectl config set-credentials k8s-node \
  9. --client-certificate=/opt/apps/kubernetes/server/bin/certs/client.pem \
  10. --client-key=/opt/apps/kubernetes/server/bin/certs/client-key.pem \
  11. --embed-certs=true \
  12. --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig
  13. set-context # 设置context,即确定账号和集群对应关系
  14. [root@hdss7-21 ~]# kubectl config set-context myk8s-context \
  15. --cluster=myk8s \
  16. --user=k8s-node \
  17. --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig
  18. use-context # 设置当前使用哪个context
  19. [root@hdss7-21 ~]# kubectl config use-context myk8s-context --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig

授权k8s-node用户
授权 k8s-node 用户绑定集群角色 system:node ,让 k8s-node 成为具备运算节点的权限。

  1. [root@hdss7-21 ~]# vim k8s-node.yaml
  2. apiVersion: rbac.authorization.k8s.io/v1
  3. kind: ClusterRoleBinding
  4. metadata:
  5. name: k8s-node
  6. roleRef:
  7. apiGroup: rbac.authorization.k8s.io
  8. kind: ClusterRole
  9. name: system:node
  10. subjects:
  11. - apiGroup: rbac.authorization.k8s.io
  12. kind: User
  13. name: k8s-node
  14. [root@hdss7-21 ~]# kubectl create -f k8s-node.yaml
  15. clusterrolebinding.rbac.authorization.k8s.io/k8s-node created
  16. [root@hdss7-21 ~]# kubectl get clusterrolebinding k8s-node
  17. NAME AGE
  18. k8s-node 36s

创建启动脚本

  1. [root@hdss7-21 ~]# vim /opt/apps/kubernetes/server/bin/kubelet-startup.sh
  2. #!/bin/sh
  3.  
  4. WORK_DIR=$(dirname $(readlink -f $0))
  5. [ $? -eq 0 ] && cd $WORK_DIR || exit
  6.  
  7. /opt/apps/kubernetes/server/bin/kubelet \
  8. --anonymous-auth=false \
  9. --cgroup-driver systemd \
  10. --cluster-dns 192.168.0.2 \
  11. --cluster-domain cluster.local \
  12. --runtime-cgroups=/systemd/system.slice \
  13. --kubelet-cgroups=/systemd/system.slice \
  14. --fail-swap-on="false" \
  15. --client-ca-file ./certs/ca.pem \
  16. --tls-cert-file ./certs/kubelet.pem \
  17. --tls-private-key-file ./certs/kubelet-key.pem \
  18. --hostname-override hdss7-21.host.com \
  19. --image-gc-high-threshold 20 \
  20. --image-gc-low-threshold 10 \
  21. --kubeconfig ../../conf/kubelet.kubeconfig \
  22. --log-dir /data/logs/kubernetes/kube-kubelet \
  23. --pod-infra-container-image harbor.od.com/public/pause:latest \
  24. --root-dir /data/kubelet
  25. [root@hdss7-21 ~]# chmod u+x /opt/apps/kubernetes/server/bin/kubelet-startup.sh
  26. [root@hdss7-21 ~]# mkdir -p /data/logs/kubernetes/kube-kubelet /data/kubelet
  27.  
  28. [root@hdss7-21 ~]# vim /etc/supervisord.d/kube-kubelet.ini
  29. [program:kube-kubelet-7-21]
  30. command=/opt/apps/kubernetes/server/bin/kubelet-startup.sh
  31. numprocs=1
  32. directory=/opt/apps/kubernetes/server/bin
  33. autostart=true
  34. autorestart=true
  35. startsecs=30
  36. startretries=3
  37. exitcodes=0,2
  38. stopsignal=QUIT
  39. stopwaitsecs=10
  40. user=root
  41. redirect_stderr=true
  42. stdout_logfile=/data/logs/kubernetes/kube-kubelet/kubelet.stdout.log
  43. stdout_logfile_maxbytes=64MB
  44. stdout_logfile_backups=5
  45. stdout_capture_maxbytes=1MB
  46. stdout_events_enabled=false
  47.  
  48. [root@hdss7-21 ~]# supervisorctl update
  49. [root@hdss7-21 ~]# supervisorctl status
  50. etcd-server-7-21 RUNNING pid 23637, uptime 1 day, 14:56:25
  51. kube-apiserver-7-21 RUNNING pid 32591, uptime 16:35:54
  52. kube-controller-manager-7-21 RUNNING pid 33357, uptime 14:40:09
  53. kube-kubelet-7-21 RUNNING pid 37232, uptime 0:01:08
  54. kube-scheduler-7-21 RUNNING pid 33450, uptime 14:30:50
  55. [root@hdss7-21 ~]# kubectl get node
  56. NAME STATUS ROLES AGE VERSION
  57. hdss7-21.host.com Ready <none> 3m13s v1.15.2
  58. hdss7-22.host.com Ready <none> 3m13s v1.15.2

修改节点角色

  1. [root@hdss7-21 ~]# kubectl get node
  2. NAME STATUS ROLES AGE VERSION
  3. hdss7-21.host.com Ready <none> 3m13s v1.15.2
  4. hdss7-22.host.com Ready <none> 3m13s v1.15.2
  5. [root@hdss7-21 ~]# kubectl label node hdss7-21.host.com node-role.kubernetes.io/node=
  6. node/hdss7-21.host.com labeled
  7. [root@hdss7-21 ~]# kubectl label node hdss7-21.host.com node-role.kubernetes.io/master=
  8. node/hdss7-21.host.com labeled
  9. [root@hdss7-21 ~]# kubectl label node hdss7-22.host.com node-role.kubernetes.io/master=
  10. node/hdss7-22.host.com labeled
  11. [root@hdss7-21 ~]# kubectl label node hdss7-22.host.com node-role.kubernetes.io/node=
  12. node/hdss7-22.host.com labeled
  13. [root@hdss7-21 ~]# kubectl get node
  14. NAME STATUS ROLES AGE VERSION
  15. hdss7-21.host.com Ready master,node 7m44s v1.15.2
  16. hdss7-22.host.com Ready master,node 7m44s v1.15.2

创建kube-proxy配置

  1. [root@hdss7-21 ~]# kubectl config set-cluster myk8s \
  2. --certificate-authority=/opt/apps/kubernetes/server/bin/certs/ca.pem \
  3. --embed-certs=true \
  4. --server=https://10.4.7.10:7443 \
  5. --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig
  6.  
  7. [root@hdss7-21 ~]# kubectl config set-credentials kube-proxy \
  8. --client-certificate=/opt/apps/kubernetes/server/bin/certs/kube-proxy-client.pem \
  9. --client-key=/opt/apps/kubernetes/server/bin/certs/kube-proxy-client-key.pem \
  10. --embed-certs=true \
  11. --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig
  12.  
  13. [root@hdss7-21 ~]# kubectl config set-context myk8s-context \
  14. --cluster=myk8s \
  15. --user=kube-proxy \
  16. --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig
  17.  
  18. [root@hdss7-21 ~]# kubectl config use-context myk8s-context --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig

加装ipvs模块

  1. [root@hdss7-21 ~]# for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
  2. [root@hdss7-21 ~]# lsmod | grep ip_vs # 查看ipvs模块

创建启动脚本

  1. [root@hdss7-21 ~]# vim /opt/apps/kubernetes/server/bin/kube-proxy-startup.sh
  2. #!/bin/sh
  3.  
  4. WORK_DIR=$(dirname $(readlink -f $0))
  5. [ $? -eq 0 ] && cd $WORK_DIR || exit
  6.  
  7. /opt/apps/kubernetes/server/bin/kube-proxy \
  8. --cluster-cidr 172.7.0.0/16 \
  9. --hostname-override hdss7-21.host.com \
  10. --proxy-mode=ipvs \
  11. --ipvs-scheduler=nq \
  12. --kubeconfig ../../conf/kube-proxy.kubeconfig
  13. [root@hdss7-21 ~]# chmod u+x /opt/apps/kubernetes/server/bin/kube-proxy-startup.sh
  14. [root@hdss7-21 ~]# mkdir -p /data/logs/kubernetes/kube-proxy
  15. [root@hdss7-21 ~]# vim /etc/supervisord.d/kube-proxy.ini
  16. [program:kube-proxy-7-21]
  17. command=/opt/apps/kubernetes/server/bin/kube-proxy-startup.sh
  18. numprocs=1
  19. directory=/opt/apps/kubernetes/server/bin
  20. autostart=true
  21. autorestart=true
  22. startsecs=30
  23. startretries=3
  24. exitcodes=0,2
  25. stopsignal=QUIT
  26. stopwaitsecs=10
  27. user=root
  28. redirect_stderr=true
  29. stdout_logfile=/data/logs/kubernetes/kube-proxy/proxy.stdout.log
  30. stdout_logfile_maxbytes=64MB
  31. stdout_logfile_backups=5
  32. stdout_capture_maxbytes=1MB
  33. stdout_events_enabled=false
  34.  
  35. [root@hdss7-21 ~]# supervisorctl update

验证集群

  1. [root@hdss7-21 ~]# supervisorctl status
  2. etcd-server-7-21 RUNNING pid 23637, uptime 2 days, 0:27:18
  3. kube-apiserver-7-21 RUNNING pid 32591, uptime 1 day, 2:06:47
  4. kube-controller-manager-7-21 RUNNING pid 33357, uptime 1 day, 0:11:02
  5. kube-kubelet-7-21 RUNNING pid 37232, uptime 9:32:01
  6. kube-proxy-7-21 RUNNING pid 47088, uptime 0:06:19
  7. kube-scheduler-7-21 RUNNING pid 33450, uptime 1 day, 0:01:43
  8.  
  9. [root@hdss7-21 ~]# yum install -y ipvsadm
  10. [root@hdss7-21 ~]# ipvsadm -Ln
  11. IP Virtual Server version 1.2.1 (size=4096)
  12. Prot LocalAddress:Port Scheduler Flags
  13. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
  14. TCP 192.168.0.1:443 nq
  15. -> 10.4.7.21:6443 Masq 1 0 0
  16. -> 10.4.7.22:6443 Masq 1 0 0
  17.  
  18. [root@hdss7-21 ~]# curl -I 172.7.21.2
  19. HTTP/1.1 200 OK
  20. Server: nginx/1.17.6
  21. Date: Tue, 07 Jan 2020 14:28:46 GMT
  22. Content-Type: text/html
  23. Content-Length: 612
  24. Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT
  25. Connection: keep-alive
  26. ETag: "5dd3e500-264"
  27. Accept-Ranges: bytes
  28.  
  29. [root@hdss7-21 ~]# curl -I 172.7.22.2 # 缺少网络插件,无法跨节点通信

k8s二进制部署 - node节点安装的更多相关文章

  1. k8s二进制部署 - master节点安装

    下载kubernetes服务端 [root@hdss7-21 ~]# cd /opt/src [root@hdss7-21 src]# wget https://dl.k8s.io/v1.15.2/k ...

  2. k8s二进制部署 - etcd节点安装

    下载etcd [root@hdss7-12 ~]# useradd -s /sbin/nologin -M etcd [root@hdss7-12 ~]# cd /opt/src/ [root@hds ...

  3. K8s二进制部署单节点 master组件 node组件 ——头悬梁

    K8s二进制部署单节点   master组件 node组件   --头悬梁 1.master组件部署 2.node   组件部署 k8s集群搭建: etcd集群 flannel网络插件 搭建maste ...

  4. K8s二进制部署单节点 etcd集群,flannel网络配置 ——锥刺股

    K8s 二进制部署单节点 master    --锥刺股 k8s集群搭建: etcd集群 flannel网络插件 搭建master组件 搭建node组件 1.部署etcd集群 2.Flannel 网络 ...

  5. k8s1.13.0二进制部署-node节点(四)

    Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情, ...

  6. k8s二进制部署

    k8s二进制部署 1.环境准备 主机名 ip地址 角色 k8s-master01 10.0.0.10 master k8s-master02 10.0.0.11 master k8s-node01 1 ...

  7. 部署node节点组件

    部署node节点组件 mv kubelet kube-proxy /opt/kubernetes/bin chmod +x /opt/kubernetes/bin/* && chmod ...

  8. Kubernets二进制安装(12)之部署Node节点服务的kube-Proxy

    kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件; kube-proxy负责为Pod创建代理服 ...

  9. Kubernets二进制安装(11)之部署Node节点服务的kubelet

    集群规划 主机名 角色 IP地址 mfyxw30.mfyxw.com kubelet 192.168.80.30 mfyxw40.mfyxw.com kubelet 192.168.80.40 注意: ...

随机推荐

  1. 攻防世界 - Crypto(一)

    base64: 根据题目base64可知编码方式,下载附件发现是一个txt文件,把内容用工具解码就彳亍了,即可得到flag, flag: cyberpeace{Welcome_to_new_World ...

  2. Upload - Labs (下)

    Pass - 11: 1.查看源代码,发现进行了一次对后缀名替换成空格,因此考虑双写绕过, 2.上传成功, 关键代码: $is_upload = false; $msg = null; if (iss ...

  3. 企业项目迁移go-zero全攻略(一)

    作者:Mikael 最近发现 golang 社区里出了一个新兴的微服务框架.看了一下官方提供的工具真的很好用,只需要定义好 .api 文件模版代码都可以一键生成,只需要关心业务:同时 core 中的工 ...

  4. kioptrixVM3

    简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/kiop ...

  5. JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  6. 24v转3.3v稳压芯片,高效率DC-DC变换器3A输出电流

    PW6206系列是一个高精度,高输入电压低静态电流,高速,低功耗降线性稳压器具有高纹波抑制.输入电压高达40V,负载电流为在VOUT=5V和VIN=7V时高达300mA.该设备采用BCD工艺制造.PW ...

  7. Linux学习安装

    Linux学习安装 服务器指的是网络中能对其他机器提供某些服务的计算机系统,相对普通PC, 服务器指的是高性能计算机,稳定性.安全性要求更高 linux安装学习 1.虚拟机 一台硬件的机器 安装vmw ...

  8. linux中的虚拟环境工具

    1.虚拟环境工具的学习 python的虚拟环境,其实就是在机器上,方便的创建出多个解释器,每个解释器运行一个项目,互相之间不受影响 2.virtualenv工具,可以方便的创建,使用,删除也很方便 3 ...

  9. 《UML与设计原则》--第四小组

    关于设计模式与原则 一.设计模式简介 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案.而面向对象设计模式描述了面向对象设计过程中特定场景下.类与相互通信的对象之间常见的组织关系. 二.G ...

  10. Jmeter非GUI界面对阿里云服务器压测

    一.Jmeter非GUI界面 参数讲解 讲解:非GUI界面,压测参数讲解             -h 帮助            -n 非GUI模式            -t 指定要运行的 JMe ...