k8s 加入节点 centos7

######基础配置  所有节点
#####################################################
##################################################### 所有节点运行
###########添加hosts

hostnamectl --static set-hostname  node$(ip addr |grep global |grep $(route  |grep default |awk '{print $NF}') |head -n1 |awk '{print $2}' |cut -d '/' -f1 |cut -d '.' -f4)
####修改计算机名后需重启

#####

for ip in 192.168.3.{223,224,225} ;do node_str="node$(echo ${ip}|cut -d '.' -f4)";[ $(grep -c "${node_str}" /etc/hosts) -eq 0 ] && echo "${ip} ${node_str} " >>/etc/hosts;done

[ $(grep -c ' k8smaster' /etc/hosts) -eq 0 ] && echo "192.168.3.207 k8smaster" >>/etc/hosts
tail /etc/hosts


#####################################################
##################################################### 所有节点运行
systemctl stop firewalld
systemctl disable firewalld
setenforce  0
#sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

#######
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
free -g


cat >/etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf


cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4



#####################################################
#####################################################安装docker  所有节点执行
yum install -y yum-utils device-mapper-persistent-data lvm2

curl -s -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看指定版本
yum list docker-ce --showduplicates |grep 17
# 安装指定版本
yum install -y --setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos.x86_64 docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

systemctl enable docker

##修改配置文件 vim /usr/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd   -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock  --registry-mirror=https://ms3cfraz.mirror.aliyuncs.com
#启动docker
\cp /usr/lib/systemd/system/docker.service{,.bak}

sed -i 's#^ExecStart=.*#ExecStart=/usr/bin/dockerd   -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock  --registry-mirror=https://ms3cfraz.mirror.aliyuncs.com#g' /usr/lib/systemd/system/docker.service
grep ExecStart /usr/lib/systemd/system/docker.service
#

systemctl daemon-reload
systemctl restart docker


#####################################################
#####################################################kubectl kubeadm 所有节点执行
echo '
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enabled=1
' >/etc/yum.repos.d/kubernetes.repo

[ ! -e rpm-package-key.gpg ] && wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import rpm-package-key.gpg


yum list kubeadm --showduplicates |grep "1.10"
yum install -y kubernetes-cni-0.6.0 kubeadm-1.10.0 kubectl-1.10.0 kubelet-1.10.0


systemctl enable kubelet.service

\cp /etc/sysctl.d/k8s.conf{,.bak}
[ $(grep -c 'vm.swappiness=0' /etc/sysctl.d/k8s.conf) -eq 0 ] && echo 'vm.swappiness=0' >>/etc/sysctl.d/k8s.conf
sysctl -p /etc/sysctl.d/k8s.conf

\cp /etc/systemd/system/kubelet.service.d/10-kubeadm.conf{,.bak}
###
####修改这一行
sed -i 's#^Environment="KUBELET_CGROUP_ARGS=.*#Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"#g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

####添加这一行
echo 'Environment="KUBELET_EXTRA_ARGS=--v=2 --fail-swap-on=false --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/k8sth/pause-amd64:3.0"' >>/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
grep Environment /etc/systemd/system/kubelet.service.d/10-kubeadm.conf



#####################################################
##################################################### 命令补全 所有节点执行
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

systemctl daemon-reload && systemctl restart kubelet




#####################################################
##################################################### 查询加入节点的token 只在主节点

#####查询token
[root@node223 ~]# kubeadm token list
TOKEN                     TTL         EXPIRES   USAGES                   DESCRIPTION                                                EXTRA GROUPS
b99a00.a144ef80536d4344   <forever>   <never>   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token


#####如果没有也可以自己创建一个token  永久的
kubeadm token create --ttl 0


#####查询discovery-token-ca-cert-hash
[root@node223 ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
d2eb9e317e6d844e9b2f55a62c09a40792a3a9f37e05e1f161ad4d87a3b2df7a


#####################################################
##################################################### 加入节点  在要加入的节点上运行
kubeadm join k8smaster:6443 --token b99a00.a144ef80536d4344 --discovery-token-ca-cert-hash sha256:d2eb9e317e6d844e9b2f55a62c09a40792a3a9f37e05e1f161ad4d87a3b2df7a
01-07 23:44