环境
centos7
内核版本 3.10.0-1062.el7.x86_64
主机名 | IP | 配置 |
cka-master01 | 192.168.176.66 | 2G2核 |
cka-slave01 | 192.168.176.67 | 1G1核 |
cka-slave02 | 192.168.176.68 | 1G1核 |
步骤1-5,master和worker节点都要进行
步骤6,只需master节点执行
步骤7,只需worker节点执行
步骤8,在master节点上进行验证
1.修改主机名
hostname cka-master01
hostname cka-slave01
hostname cka-slave02
vim /etc/sysconfig/network
# 在文件中加入对应的主机名
2.修改hosts文件
vim /etc/hosts
192.168.176.66 cka-master01
192.168.176.67 cka-slave01
192.168.176.68 cka-slave02
3.关闭swap分区、selinux、防火墙
swapoff -a
vim /etc/fstab
找到下面行在前面加一个 # 注释 swap功能
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
4.安装docker
# 卸载原来安装的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装相关依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加docker的阿里云yum源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum install -y \
containerd.io-1.2.13 \
docker-ce-19.03.11 \
docker-ce-cli-19.03.11
# 启动docker
systemctl start docker
# 查看docker版本
docker version
# 设置docker开机自启
systemctl enable docker
5.安装kubeadm、kubelet、kubectl
# 配置阿里云kubernetes的yum源
cat <<EOF > /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
# 安装kubeadm、kubelet、kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
6.master节点初始化
(注意:matser至少要有2G2核)
kubeadm init \
--apiserver-advertise-address=192.168.176.66 \ # 填写master的ip地址
--image-repository registry.aliyuncs.com/google_containers \ # 设置从阿里云拉取相应的镜像
--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
# 下载网络插件-calico
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
# 也可以选择flannel作为网络插件
curl https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml -O
kubectl apply -f kube-flannel.yml
7.加入worker节点
在worker节点中执行以下命令,该命令会在执行kubeadm init命令后出现
kubeadm join 192.168.176.66:6443 --token nwiykd.avt9oedno8wwpixb \
--discovery-token-ca-cert-hash sha256:8298749505e742ba38d99b50044e38fc3a2fc1e7ebe70dcedc2fa305e167b56f
# 如果忘记保存该条命令了或者token失效了,可以执行下面的命令,重新生成kubeadm join相关token及命令
kubeadm token create --print-join-command
8.验证
kubectl get pods -A
如果所有Pod都处于Running状态,说明集群正常运行。如果发现有状态错误的Pod,执行kubectl describe pod <pod_name> -n kube-system查看错误原因,常见的错误一般是镜像没有下载完成
注意:
kubernetes1.18.6之后的一个坑
出现这种情况,是/etc/kubernetes/manifests下的kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口是0,在文件中注释掉就可以了
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
vim /etc/kubernetes/manifests/kube-scheduler.yaml
kube-controller-manager.yaml
kube-scheduler.yaml
所有机器重启kubelet
systemctl restart kubelet.service
备注:
自动补全功能(在使用kubectl命令的时候按tab键就可以自动补啦)
在master节点上执行以下命令
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)