- 借助ntp服务设定各节点主机时间精确同步
- 通过dns完成各节点主机名称解析,测试环境主机数量较少时也可以使用hosts文件进行
- 关闭各节点iptables,firewalld,并确保它们被禁止随系统引导过程启动
- 各节点禁用selinux
- 各节点禁用swap
- 若要使用ipvs模型的proxy,各节点还需要载入ipvs相关的各模块
设定时间同步
yum install -y ntpdate
ntpdate ntp1.aliyun.com
关闭防火墙,selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config -i
安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
systemctl start docker && systemctl enable docker
修改内核参数
sysctl -a |grep bridge
#net.bridge.bridge-nf-call-ip6tables = 1
#net.bridge.bridge-nf-call-iptables = 1
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
配置k8s yum源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum repolist -y
yum list all |grep "^kube"
yum install -y kubelet kubeadm kubectl
#或者指定版本
yum install kubeadm-1.19.2 kubelet-1.19.2 kubectl-1.19.2
以下master操作,node不需要
检查能否正常初始化
kubeadm init --kubernetes-version="v1.19.2" --pod-network-cidr="10.244.0.0/16" --dry-run
#有时候会失败,可关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#或者通过参数设置忽略swap
kubeadm init --ignore-preflight-errors=Swap
sed -i 's/KUBELET_EXTRA_ARGS=/KUBELET_EXTRA_ARGS="--fail-swap-on=false"/' /etc/sysconfig/kubelet
查看需要哪些镜像
kubeadm config images list
pull镜像
kubeadm config images pull
#如果pull失败,因为国家防火墙的原因。自动上传镜像
docker load -i xxx.tar.gz
上传完成后,直接初始化。
镜像在百度云'k8s1.19.2镜像'目录下面
正式初始化master
kubeadm init --kubernetes-version="v1.19.2" --pod-network-cidr="10.244.0.0/16"
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
部署flannel网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果失败,改一下域名解析
cat < /etc/hosts
199.232.28.133 raw.githubusercontent.com
EOF
以下master node都操作
systemctl start kubelet && systemctl enable kubelet
node节点
kubeadm join 172.31.7.59:6443 --token 4rfeds.ohk6lk2owqo60av8 \
--discovery-token-ca-cert-hash sha256:03dfb60ff5765107fee8e5a42880fe71bdcb801b4ff28b8268bb330e732f77e1
注:
node节点添加之后,master上面查看一下状态
kubectl get nodes
如果一直处于NotReady状态的话,说明node没添加成功
查看一下pod状态
kubectl get pods -n kube-system
一般情况下,为node节点pull镜像失败,describe查看一下pod状态
kubectl describe pod PodName -n kube-system #注意,要加上-n 命名空间
查看哪个镜像没pull下来,到node节点上面手动上传即可
一般情况为flannel / pause / kube-proxy 这几个镜像
如果想改默认ip网段,需改初始化命令,和flannel配置文件。