手动添加node节点
- 添加网络服务
# 从node节点拷贝相关证书
scp -r /etc/kubernetes 10.32.254.18:/etc/
# 解压
tar -xf flannel-v0.9.1-linux-amd64.tar.gz
cp {flanneld,mk-docker-opts.sh} /usr/local/bin/
cp flanneld.service /etc/systemd/system/
cat flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
Before=docker.service
[Service]
Type=notify
ExecStart=/usr/local/bin/flanneld -etcd-cafile=/etc/kubernetes/ssl/ca.pem -etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem -etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem -etcd-endpoints=https://10.32.254.19:2379,https://10.32.254.20:2379,https://10.32.254.21:2379 -etcd-prefix=/kubernetes/network
ExecStartPost=/usr/local/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
# 启动flanneld
systemctl start flanneld && systemctl enable flanneld
- 添加docker服务
wget https://download.docker.com/linux/static/stable/x86_64/docker-17.12.0-ce.tgz
tar -xvf docker-17.12.0-ce.tgz
cp docker/docker* /usr/local/bin
cat > /etc/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
[Service]
Environment="PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
EnvironmentFile=-/run/flannel/subnet.env
EnvironmentFile=-/run/flannel/docker
ExecStart=/usr/local/bin/dockerd \
--exec-opt native.cgroupdriver=cgroupfs \
--log-level=error \
--log-driver=json-file
ExecReload=/bin/kill -s HUP $MAINPID
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
Restart=on-failure
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
# 启动
systemctl daemon-reload
systemctl enable docker && systemctl start docker
- 添加kube-proxy和kubelet
# copy 2进制
scp /usr/local/bin/kubelet 10.32.254.18:/usr/local/bin/
scp /usr/local/bin/kube-proxy 10.32.254.18:/usr/local/bin/
# 依赖
conntrack-tools-1.4.4-4.el7.x86_64
mkdir -p /var/lib/kube-proxy
cat > /etc/systemd/system/kube-proxy.service << EOF
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
WorkingDirectory=/var/lib/kube-proxy
ExecStart=/usr/local/bin/kube-proxy --bind-address=10.32.254.18 --hostname-override=10.32.254.18 --cluster-cidr=10.254.0.0/16 --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig --logtostderr=true --v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
# 启动
systemctl daemon-reload
systemctl enable kube-proxy
systemctl start kube-proxy
systemctl status kube-proxy
# kubelet
mkdir -p /var/lib/kubelet
cat > /etc/systemd/system/kubelet.service << EOF
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
ExecStart=/usr/local/bin/kubelet --address=10.32.254.18 --hostname-override=10.32.254.18 --pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest --experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --cert-dir=/etc/kubernetes/ssl --container-runtime=docker --cluster-dns=10.254.0.2 --cluster-domain=cluster.local --hairpin-mode promiscuous-bridge --allow-privileged=true --serialize-image-pulls=false --register-node=true --logtostderr=true --cgroup-driver=cgroupfs --v=2
Restart=on-failure
KillMode=process
LimitNOFILE=65536
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 启动
systemctl daemon-reload
systemctl enable kubelet && systemctl start kubelet
# master节点查看验证
kubectl get nodes
NAME STATUS ROLES AGE VERSION
10.32.254.18 Ready <none> 1m v1.10.13
10.32.254.19 Ready <none> 254d v1.10.13
10.32.254.20 Ready <none> 254d v1.10.13
10.32.254.21 Ready <none> 254d v1.10.13