k8s二进制部署 - node节点安装
创建kubelet配置
- • set-cluster # 创建需要连接的集群信息,可以创建多个k8s集群信息
- [root@hdss7-21 ~]# kubectl config set-cluster myk8s \
- --certificate-authority=/opt/apps/kubernetes/server/bin/certs/ca.pem \
- --embed-certs=true \
- --server=https://10.4.7.10:7443 \
- --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig
- • set-credentials # 创建用户账号,即用户登陆使用的客户端私有和证书,可以创建多个证书
- [root@hdss7-21 ~]# kubectl config set-credentials k8s-node \
- --client-certificate=/opt/apps/kubernetes/server/bin/certs/client.pem \
- --client-key=/opt/apps/kubernetes/server/bin/certs/client-key.pem \
- --embed-certs=true \
- --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig
- • set-context # 设置context,即确定账号和集群对应关系
- [root@hdss7-21 ~]# kubectl config set-context myk8s-context \
- --cluster=myk8s \
- --user=k8s-node \
- --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig
- • use-context # 设置当前使用哪个context
- [root@hdss7-21 ~]# kubectl config use-context myk8s-context --kubeconfig=/opt/apps/kubernetes/conf/kubelet.kubeconfig
授权k8s-node用户
授权 k8s-node 用户绑定集群角色 system:node ,让 k8s-node 成为具备运算节点的权限。
- [root@hdss7-21 ~]# vim k8s-node.yaml
- apiVersion: rbac.authorization.k8s.io/v1
- kind: ClusterRoleBinding
- metadata:
- name: k8s-node
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: system:node
- subjects:
- - apiGroup: rbac.authorization.k8s.io
- kind: User
- name: k8s-node
- [root@hdss7-21 ~]# kubectl create -f k8s-node.yaml
- clusterrolebinding.rbac.authorization.k8s.io/k8s-node created
- [root@hdss7-21 ~]# kubectl get clusterrolebinding k8s-node
- NAME AGE
- k8s-node 36s
创建启动脚本
- [root@hdss7-21 ~]# vim /opt/apps/kubernetes/server/bin/kubelet-startup.sh
- #!/bin/sh
- WORK_DIR=$(dirname $(readlink -f $0))
- [ $? -eq 0 ] && cd $WORK_DIR || exit
- /opt/apps/kubernetes/server/bin/kubelet \
- --anonymous-auth=false \
- --cgroup-driver systemd \
- --cluster-dns 192.168.0.2 \
- --cluster-domain cluster.local \
- --runtime-cgroups=/systemd/system.slice \
- --kubelet-cgroups=/systemd/system.slice \
- --fail-swap-on="false" \
- --client-ca-file ./certs/ca.pem \
- --tls-cert-file ./certs/kubelet.pem \
- --tls-private-key-file ./certs/kubelet-key.pem \
- --hostname-override hdss7-21.host.com \
- --image-gc-high-threshold 20 \
- --image-gc-low-threshold 10 \
- --kubeconfig ../../conf/kubelet.kubeconfig \
- --log-dir /data/logs/kubernetes/kube-kubelet \
- --pod-infra-container-image harbor.od.com/public/pause:latest \
- --root-dir /data/kubelet
- [root@hdss7-21 ~]# chmod u+x /opt/apps/kubernetes/server/bin/kubelet-startup.sh
- [root@hdss7-21 ~]# mkdir -p /data/logs/kubernetes/kube-kubelet /data/kubelet
- [root@hdss7-21 ~]# vim /etc/supervisord.d/kube-kubelet.ini
- [program:kube-kubelet-7-21]
- command=/opt/apps/kubernetes/server/bin/kubelet-startup.sh
- numprocs=1
- directory=/opt/apps/kubernetes/server/bin
- autostart=true
- autorestart=true
- startsecs=30
- startretries=3
- exitcodes=0,2
- stopsignal=QUIT
- stopwaitsecs=10
- user=root
- redirect_stderr=true
- stdout_logfile=/data/logs/kubernetes/kube-kubelet/kubelet.stdout.log
- stdout_logfile_maxbytes=64MB
- stdout_logfile_backups=5
- stdout_capture_maxbytes=1MB
- stdout_events_enabled=false
- [root@hdss7-21 ~]# supervisorctl update
- [root@hdss7-21 ~]# supervisorctl status
- etcd-server-7-21 RUNNING pid 23637, uptime 1 day, 14:56:25
- kube-apiserver-7-21 RUNNING pid 32591, uptime 16:35:54
- kube-controller-manager-7-21 RUNNING pid 33357, uptime 14:40:09
- kube-kubelet-7-21 RUNNING pid 37232, uptime 0:01:08
- kube-scheduler-7-21 RUNNING pid 33450, uptime 14:30:50
- [root@hdss7-21 ~]# kubectl get node
- NAME STATUS ROLES AGE VERSION
- hdss7-21.host.com Ready <none> 3m13s v1.15.2
- hdss7-22.host.com Ready <none> 3m13s v1.15.2
修改节点角色
- [root@hdss7-21 ~]# kubectl get node
- NAME STATUS ROLES AGE VERSION
- hdss7-21.host.com Ready <none> 3m13s v1.15.2
- hdss7-22.host.com Ready <none> 3m13s v1.15.2
- [root@hdss7-21 ~]# kubectl label node hdss7-21.host.com node-role.kubernetes.io/node=
- node/hdss7-21.host.com labeled
- [root@hdss7-21 ~]# kubectl label node hdss7-21.host.com node-role.kubernetes.io/master=
- node/hdss7-21.host.com labeled
- [root@hdss7-21 ~]# kubectl label node hdss7-22.host.com node-role.kubernetes.io/master=
- node/hdss7-22.host.com labeled
- [root@hdss7-21 ~]# kubectl label node hdss7-22.host.com node-role.kubernetes.io/node=
- node/hdss7-22.host.com labeled
- [root@hdss7-21 ~]# kubectl get node
- NAME STATUS ROLES AGE VERSION
- hdss7-21.host.com Ready master,node 7m44s v1.15.2
- hdss7-22.host.com Ready master,node 7m44s v1.15.2
创建kube-proxy配置
- [root@hdss7-21 ~]# kubectl config set-cluster myk8s \
- --certificate-authority=/opt/apps/kubernetes/server/bin/certs/ca.pem \
- --embed-certs=true \
- --server=https://10.4.7.10:7443 \
- --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig
- [root@hdss7-21 ~]# kubectl config set-credentials kube-proxy \
- --client-certificate=/opt/apps/kubernetes/server/bin/certs/kube-proxy-client.pem \
- --client-key=/opt/apps/kubernetes/server/bin/certs/kube-proxy-client-key.pem \
- --embed-certs=true \
- --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig
- [root@hdss7-21 ~]# kubectl config set-context myk8s-context \
- --cluster=myk8s \
- --user=kube-proxy \
- --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig
- [root@hdss7-21 ~]# kubectl config use-context myk8s-context --kubeconfig=/opt/apps/kubernetes/conf/kube-proxy.kubeconfig
加装ipvs模块
- [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
- [root@hdss7-21 ~]# lsmod | grep ip_vs # 查看ipvs模块
创建启动脚本
- [root@hdss7-21 ~]# vim /opt/apps/kubernetes/server/bin/kube-proxy-startup.sh
- #!/bin/sh
- WORK_DIR=$(dirname $(readlink -f $0))
- [ $? -eq 0 ] && cd $WORK_DIR || exit
- /opt/apps/kubernetes/server/bin/kube-proxy \
- --cluster-cidr 172.7.0.0/16 \
- --hostname-override hdss7-21.host.com \
- --proxy-mode=ipvs \
- --ipvs-scheduler=nq \
- --kubeconfig ../../conf/kube-proxy.kubeconfig
- [root@hdss7-21 ~]# chmod u+x /opt/apps/kubernetes/server/bin/kube-proxy-startup.sh
- [root@hdss7-21 ~]# mkdir -p /data/logs/kubernetes/kube-proxy
- [root@hdss7-21 ~]# vim /etc/supervisord.d/kube-proxy.ini
- [program:kube-proxy-7-21]
- command=/opt/apps/kubernetes/server/bin/kube-proxy-startup.sh
- numprocs=1
- directory=/opt/apps/kubernetes/server/bin
- autostart=true
- autorestart=true
- startsecs=30
- startretries=3
- exitcodes=0,2
- stopsignal=QUIT
- stopwaitsecs=10
- user=root
- redirect_stderr=true
- stdout_logfile=/data/logs/kubernetes/kube-proxy/proxy.stdout.log
- stdout_logfile_maxbytes=64MB
- stdout_logfile_backups=5
- stdout_capture_maxbytes=1MB
- stdout_events_enabled=false
- [root@hdss7-21 ~]# supervisorctl update
验证集群
- [root@hdss7-21 ~]# supervisorctl status
- etcd-server-7-21 RUNNING pid 23637, uptime 2 days, 0:27:18
- kube-apiserver-7-21 RUNNING pid 32591, uptime 1 day, 2:06:47
- kube-controller-manager-7-21 RUNNING pid 33357, uptime 1 day, 0:11:02
- kube-kubelet-7-21 RUNNING pid 37232, uptime 9:32:01
- kube-proxy-7-21 RUNNING pid 47088, uptime 0:06:19
- kube-scheduler-7-21 RUNNING pid 33450, uptime 1 day, 0:01:43
- [root@hdss7-21 ~]# yum install -y ipvsadm
- [root@hdss7-21 ~]# ipvsadm -Ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.0.1:443 nq
- -> 10.4.7.21:6443 Masq 1 0 0
- -> 10.4.7.22:6443 Masq 1 0 0
- [root@hdss7-21 ~]# curl -I 172.7.21.2
- HTTP/1.1 200 OK
- Server: nginx/1.17.6
- Date: Tue, 07 Jan 2020 14:28:46 GMT
- Content-Type: text/html
- Content-Length: 612
- Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT
- Connection: keep-alive
- ETag: "5dd3e500-264"
- Accept-Ranges: bytes
- [root@hdss7-21 ~]# curl -I 172.7.22.2 # 缺少网络插件,无法跨节点通信
k8s二进制部署 - node节点安装的更多相关文章
- k8s二进制部署 - master节点安装
下载kubernetes服务端 [root@hdss7-21 ~]# cd /opt/src [root@hdss7-21 src]# wget https://dl.k8s.io/v1.15.2/k ...
- k8s二进制部署 - etcd节点安装
下载etcd [root@hdss7-12 ~]# useradd -s /sbin/nologin -M etcd [root@hdss7-12 ~]# cd /opt/src/ [root@hds ...
- K8s二进制部署单节点 master组件 node组件 ——头悬梁
K8s二进制部署单节点 master组件 node组件 --头悬梁 1.master组件部署 2.node 组件部署 k8s集群搭建: etcd集群 flannel网络插件 搭建maste ...
- K8s二进制部署单节点 etcd集群,flannel网络配置 ——锥刺股
K8s 二进制部署单节点 master --锥刺股 k8s集群搭建: etcd集群 flannel网络插件 搭建master组件 搭建node组件 1.部署etcd集群 2.Flannel 网络 ...
- k8s1.13.0二进制部署-node节点(四)
Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情, ...
- k8s二进制部署
k8s二进制部署 1.环境准备 主机名 ip地址 角色 k8s-master01 10.0.0.10 master k8s-master02 10.0.0.11 master k8s-node01 1 ...
- 部署node节点组件
部署node节点组件 mv kubelet kube-proxy /opt/kubernetes/bin chmod +x /opt/kubernetes/bin/* && chmod ...
- Kubernets二进制安装(12)之部署Node节点服务的kube-Proxy
kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件; kube-proxy负责为Pod创建代理服 ...
- Kubernets二进制安装(11)之部署Node节点服务的kubelet
集群规划 主机名 角色 IP地址 mfyxw30.mfyxw.com kubelet 192.168.80.30 mfyxw40.mfyxw.com kubelet 192.168.80.40 注意: ...
随机推荐
- 攻防世界 - Crypto(一)
base64: 根据题目base64可知编码方式,下载附件发现是一个txt文件,把内容用工具解码就彳亍了,即可得到flag, flag: cyberpeace{Welcome_to_new_World ...
- Upload - Labs (下)
Pass - 11: 1.查看源代码,发现进行了一次对后缀名替换成空格,因此考虑双写绕过, 2.上传成功, 关键代码: $is_upload = false; $msg = null; if (iss ...
- 企业项目迁移go-zero全攻略(一)
作者:Mikael 最近发现 golang 社区里出了一个新兴的微服务框架.看了一下官方提供的工具真的很好用,只需要定义好 .api 文件模版代码都可以一键生成,只需要关心业务:同时 core 中的工 ...
- kioptrixVM3
简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/kiop ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- 24v转3.3v稳压芯片,高效率DC-DC变换器3A输出电流
PW6206系列是一个高精度,高输入电压低静态电流,高速,低功耗降线性稳压器具有高纹波抑制.输入电压高达40V,负载电流为在VOUT=5V和VIN=7V时高达300mA.该设备采用BCD工艺制造.PW ...
- Linux学习安装
Linux学习安装 服务器指的是网络中能对其他机器提供某些服务的计算机系统,相对普通PC, 服务器指的是高性能计算机,稳定性.安全性要求更高 linux安装学习 1.虚拟机 一台硬件的机器 安装vmw ...
- linux中的虚拟环境工具
1.虚拟环境工具的学习 python的虚拟环境,其实就是在机器上,方便的创建出多个解释器,每个解释器运行一个项目,互相之间不受影响 2.virtualenv工具,可以方便的创建,使用,删除也很方便 3 ...
- 《UML与设计原则》--第四小组
关于设计模式与原则 一.设计模式简介 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案.而面向对象设计模式描述了面向对象设计过程中特定场景下.类与相互通信的对象之间常见的组织关系. 二.G ...
- Jmeter非GUI界面对阿里云服务器压测
一.Jmeter非GUI界面 参数讲解 讲解:非GUI界面,压测参数讲解 -h 帮助 -n 非GUI模式 -t 指定要运行的 JMe ...