前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s二进制1.14版本添加node节点

k8s二进制1.14版本添加node节点

作者头像
SY小站
修改2020-06-15 17:26:57
6930
修改2020-06-15 17:26:57
举报
文章被收录于专栏:SY小站的专栏

1. 前言

新增俩台node节点加进k8s集群。

2. 初始化

2.1 安装依赖包

以下操作均在所有机器操作

代码语言:javascript
复制
yum install -y epel-release conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget unzip net-tools fuse-devel fuse fuse-libs

2.2 关闭防火墙

代码语言:javascript
复制

systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT

2.3 关闭swap分区

代码语言:javascript
复制
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

2.4 关闭SElinux

代码语言:javascript
复制

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

2.5 加载内核并优化

代码语言:javascript
复制

modprobe ip_vs_rr
modprobe br_netfilter
cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
cp kubernetes.conf  /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf

2.6 ntp

代码语言:javascript
复制
ntpdate ntp1.aliyun.com

2.7 创建相关目录

代码语言:javascript
复制
mkdir -p  /opt/k8s/{bin,work} /etc/{kubernetes,etcd}/cert

3. 操作

3.1 添加hosts

#在之前的master节点添加

代码语言:javascript
复制
[root@test-master-1 ~]# echo "10.16.8.86  test-node-16" >>/etc/hosts                  
[root@test-master-1 ~]# echo "10.16.8.80  test-node-17" >>/etc/hosts

新加的俩台节点加hosts

代码语言:javascript
复制

cat >>/etc/hosts<<EOF
10.16.8.10  test-master-1
10.16.8.11  test-master-2
10.16.8.12  test-master-3
10.16.8.13  test-node-15
10.16.8.86  test-node-16
10.16.8.80  test-node-17
EOF

3.2 分发秘钥等信息

master节点操作

代码语言:javascript
复制
ssh-copy-id -i ~/.ssh/id_rsa.pub test-node-16
ssh-copy-id -i ~/.ssh/id_rsa.pub test-node-17

推送CA证书

代码语言:javascript
复制
cd /etc/kubernetes/cert
scp ca.pem ca-config.json test-node-16:/etc/kubernetes/cert/
scp ca.pem ca-config.json test-node-17:/etc/kubernetes/cert/

3.3 flannal部署

拷贝二进制文件

代码语言:javascript
复制

cd /opt/k8s/work/flannel
scp flanneld mk-docker-opts.sh test-node-16:/opt/k8s/bin/
scp flanneld mk-docker-opts.sh test-node-17:/opt/k8s/bin/

拷贝flanneld密钥

代码语言:javascript
复制
ssh test-node-16 "mkdir -p /etc/flanneld/cert"
ssh test-node-17 "mkdir -p /etc/flanneld/cert"
scp /etc/flanneld/cert/flanneld*.pem test-node-16:/etc/flanneld/cert
scp /etc/flanneld/cert/flanneld*.pem test-node-17:/etc/flanneld/cert

拷贝flannel启动文件

代码语言:javascript
复制
scp /etc/systemd/system/flanneld.service test-node-16:/etc/systemd/system/
scp /etc/systemd/system/flanneld.service test-node-17:/etc/systemd/system/
#启动flannel
ssh test-node-16 "systemctl daemon-reload && systemctl enable flanneld && systemctl restart flanneld"
ssh test-node-17 "systemctl daemon-reload && systemctl enable flanneld && systemctl restart flanneld"

3.4 Kubernetes Node 节点安装docker

代码语言:javascript
复制

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  
  
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
yum install docker-ce-19.03.1-3.el7 -y

创建配置文件

代码语言:javascript
复制

mkdir -p /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://dockerhub.mirrors.nwafu.edu.cn/","https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"],
    "max-concurrent-downloads": 20,
    "live-restore": true,
    "max-concurrent-uploads": 10,
    "debug": true,
    "log-opts": {
      "max-size": "100m",
      "max-file": "5"
    }
}
EOF

修改docker启动配置文件

代码语言:javascript
复制
vim /usr/lib/systemd/system/docker.service
EnvironmentFile=-/run/flannel/dockerExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/containerd.sock
代码语言:javascript
复制
systemctl daemon-reload && systemctl enable docker && systemctl restart docker
systemctl status docker|grep Active

3.5 安装kubelet

创建kubelet bootstrap kubeconfig文件

代码语言:javascript
复制

#master节点操作
另一台创建文件等和这个同理,这里只列举一个。

cd /opt/k8s/work
export BOOTSTRAP_TOKEN=$(kubeadm token create \
  --description kubelet-bootstrap-token \
  --groups system:bootstrappers:test-node-16 \
  --kubeconfig ~/.kube/config)
# 设置集群参数
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/cert/ca.pem \
  --embed-certs=true \
  --server=https://10.16.8.14:6443 \
  --kubeconfig=kubelet-bootstrap-test-node-16.kubeconfig
# 设置客户端认证参数
kubectl config set-credentials kubelet-bootstrap \
  --token=${BOOTSTRAP_TOKEN} \
  --kubeconfig=kubelet-bootstrap-test-node-16.kubeconfig
# 设置上下文参数
kubectl config set-context default \
  --cluster=kubernetes \
  --user=kubelet-bootstrap \
  --kubeconfig=kubelet-bootstrap-test-node-16.kubeconfig
# 设置默认上下文
kubectl config use-context default --kubeconfig=kubelet-bootstrap-test-node-16.kubeconfig

分发kubeconfig

代码语言:javascript
复制

cd /opt/k8s/work
scp kubelet-bootstrap-test-node-16.kubeconfig test-node-16:/etc/kubernetes/kubelet-bootstrap.kubeconfig

查看kubeadm为各个节点创建的token

代码语言:javascript
复制
kubeadm token list --kubeconfig ~/.kube/config

创建和分发kubelet参数配置

代码语言:javascript
复制

cd /opt/k8s/work
sed -e "s/##NODE_IP##/10.16.8.86/" kubelet-config.yaml.template > kubelet-config-10.16.8.86.yaml.template
sed -e "s/##NODE_IP##/10.16.8.80/" kubelet-config.yaml.template > kubelet-config-10.16.8.80.yaml.template
scp kubelet-config-10.16.8.86.yaml.template root@test-node-16:/etc/kubernetes/kubelet-config.yaml
scp kubelet-config-10.16.8.80.yaml.template root@test-node-17:/etc/kubernetes/kubelet-config.yaml

拷贝kubelet启动文件和命令

代码语言:javascript
复制

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
sed -e "s/##NODE_NAME##/test-node-16/" kubelet.service.template > kubelet-test-node-16.service
sed -e "s/##NODE_NAME##/test-node-17/" kubelet.service.template > kubelet-test-node-17.service
scp kubelet-test-node-16.service root@test-node-16:/etc/systemd/system/kubelet.service
scp kubelet-test-node-17.service root@test-node-17:/etc/systemd/system/kubelet.service
scp /opt/k8s/bin/kubelet test-node-16:/opt/k8s/bin/
scp /opt/k8s/bin/kubelet test-node-17:/opt/k8s/bin/

启动kubelet

代码语言:javascript
复制

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
ssh root@test-node-16 "mkdir -p ${K8S_DIR}/kubelet/kubelet-plugins/volume/exec/"
ssh root@test-node-16 "systemctl daemon-reload && systemctl enable kubelet && systemctl restart kubelet"
ssh root@test-node-17 "mkdir -p ${K8S_DIR}/kubelet/kubelet-plugins/volume/exec/"
ssh root@test-node-17 "systemctl daemon-reload && systemctl enable kubelet && systemctl restart kubelet"

签注证书

代码语言:javascript
复制
kubectl get csr | grep Pending | awk '{print $1}' | xargs kubectl certificate approve

3.6 安装kube-proxy

推送kube-proxy二进制启动文件和kubeconfig文件

代码语言:javascript
复制

cd /opt/k8s/work/
scp kubernetes/server/bin/kube-proxy test-node-16:/opt/k8s/bin/
scp kubernetes/server/bin/kube-proxy test-node-17:/opt/k8s/bin/
scp kube-proxy.kubeconfig root@test-node-16:/etc/kubernetes/
scp kube-proxy.kubeconfig root@test-node-17:/etc/kubernetes/

创建和分发kube-proxy配置文件

代码语言:javascript
复制

cd /opt/k8s/work/
sed -e "s/##NODE_NAME##/test-node-16/" -e "s/##NODE_IP##/10.16.8.86/" kube-proxy-config.yaml.template > kube-proxy-config-test-node-16.yaml.template
sed -e "s/##NODE_NAME##/test-node-17/" -e "s/##NODE_IP##/10.16.8.80/" kube-proxy-config.yaml.template > kube-proxy-config-test-node-17.yaml.template
scp kube-proxy-config-test-node-16.yaml.template root@test-node-16:/etc/kubernetes/kube-proxy-config.yaml
scp kube-proxy-config-test-node-17.yaml.template root@test-node-17:/etc/kubernetes/kube-proxy-config.yaml
scp kube-proxy.service root@test-node-16:/etc/systemd/system/
scp kube-proxy.service root@test-node-17:/etc/systemd/system/

启动kube-proxy服务

代码语言:javascript
复制
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
ssh root@test-node-16 "mkdir -p ${K8S_DIR}/kube-proxy"
ssh root@test-node-16 "systemctl daemon-reload && systemctl enable kube-proxy && systemctl restart kube-proxy"
ssh root@test-node-17 "mkdir -p ${K8S_DIR}/kube-proxy"
ssh root@test-node-17 "systemctl daemon-reload && systemctl enable kube-proxy && systemctl restart kube-proxy"

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SY技术小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 初始化
  • 2.1 安装依赖包
  • 2.2 关闭防火墙
  • 2.3 关闭swap分区
  • 2.4 关闭SElinux
  • 2.5 加载内核并优化
  • 2.6 ntp
  • 2.7 创建相关目录
  • 3. 操作
  • 3.1 添加hosts
  • 3.2 分发秘钥等信息
  • 3.3 flannal部署
  • 3.4 Kubernetes Node 节点安装docker
  • 3.5 安装kubelet
  • 3.6 安装kube-proxy
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档