三台机器
## 设置 hostnaem
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
# edit the /etc/host
echo '192.168.116.136 master ' >> /etc/hosts
echo '192.168.116.137 node1 ' >> /etc/hosts
echo '192.168.116.130 node2 ' >> /etc/hosts
source /etc/hosts
reboot
pre
yum -y install conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
swapoff -a
echo “vm.swappiness = 0”>> /etc/sysctl.conf
timedatectl set-timezone Asia/Shanghai
#将当前的UTC时间写入硬件时钟
timedatectl set-local-rtc 0
systemctl restart rsyslog
systemctl restart crond
date
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
docker
## docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum remove containerd.io docker-ce docker-ce-cli
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
cd /etc/yum.repos.d/
# yum update -y
yum install -y docker-ce docker-ce-cli
cat <<EOF | tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl enable --now docker
systemctl daemon-reload
systemctl restart docker
docker --version
pre_k8s
### k8s
cat > /etc/yum.repos.d/kubenetes.repo <<eof
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enabled=1
#gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
eof
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
rm /var/lib/kubelet/ -rf
rm /var/lib/etcd/ -rf
# rm /var/lib/docker/* -rf
rm -rf /root/.kube/
kubeadm reset
just_in master
## master node configuration
swapoff -a
echo “vm.swappiness = 0”>> /etc/sysctl.conf
kubeadm init --kubernetes-version=v1.20.4 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--ignore-preflight-errors=Swap \
--apiserver-advertise-address=192.168.116.136
mkdir /root/k8s -p
HOME=/root/k8s
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get nodes
kubectl get pods -n kube-system
# kubeadm join 192.168.116.136:6443 --token h0pyqy.srd57bbc1i9rlfs7 \
# --discovery-token-ca-cert-hash sha256:a75e758d33031438e6bc581f3ddcf59cb688bbd81c31713b324226ea120a7a92
### error
# kubectl get cs
# controller-manager Unhealthy Get “http://127.0.0.1:10252/healthz”: dial tcp 127.0.0.1:10252: connect: connection refused
# scheduler Unhealthy Get “http://127.0.0.1:10251/healthz”: dial tcp 127.0.0.1:10251: connect: connection refused
# 解决思路:
# 注释掉/etc/kubernetes/manifests下的kube-controller-manager.yaml和kube-scheduler.yaml的- – port=0。
# 再次查看应该正常了。
# 如还没有,可以重启机器看看。
just for nodes
#### nodes
scp root@192.168.116.136:/etc/kubernetes/admin.conf ./ # password: test
systemctl enable --now kubelet
export KUBECONFIG=./admin.conf
kubectl get nodes
echo '192.168.116.136 master' >> /etc/hosts
echo '192.168.116.137 node1' >> /etc/hosts
echo '192.168.116.130 node02' >> /etc/hosts
echo '185.199.109.133 raw.githubusercontent.com' >> /etc/hosts
echo '185.199.108.133 raw.githubusercontent.com' >> /etc/hosts
echo '185.199.110.133 raw.githubusercontent.com' >> /etc/hosts
echo '185.199.111.133 raw.githubusercontent.com' >> /etc/hosts
echo '185.199.111.133 raw.githubusercontent.com' >> /etc/hosts
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
systemctl restart kubelet
### join 失败, 查看下 kubelet 的状态。我们需要 running, 若不running 执行一下. 或者看看 syslog 找原因。
# vim /var/lib/kubelet/kubeadm-flags.env
# KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.2"
swapoff -a
echo “vm.swappiness = 0”>> /etc/sysctl.conf
# rm -rf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/pki/ca.crt /etc/kubernetes/kubelet.conf
kubeadm join 192.168.116.136:6443 --token h0pyqy.srd57bbc1i9rlfs7 \
--discovery-token-ca-cert-hash sha256:a75e758d33031438e6bc581f3ddcf59cb688bbd81c31713b324226ea120a7a92