环境: centos 7.8
k8s 安装至少要两核服务器,运行内存建议4G
1. 基础环境准备
关闭防护墙
systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
修改hostname
hostnamectl set-hostname master
### 在hosts 文件中添加 主机ip地址 和 名称的映射
vim /etc/hosts
xxx.xxx.xx.xxx master
安装基础依赖
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
关闭selinux和swapoff分区
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
调整内核参数
cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
EOF
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf
升级内核版本
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装
一次!
yum --enablerepo=elrepo-kernel install -y kernel-lt
# 设置开机从新内核启动
grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 7 (Core)'
2. docker安装
添加软件仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep
安装docker
yum -y install docker-ce
damon.json
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
# 重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
这里建议设置国内的镜像源,要不然后面安装k8s可能会出现镜像下载不了的问题。导致安装失败
3. kubectl、kubelet、kubeadm的安装
添加国内镜像仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el8-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装
yum -y install kubeadm-1.19.14 kubectl-1.19.14 kubelet-1.19.14
尽量指定版本,不指定回去下载最新的版本,可能导致版本不兼容。
4. kubeadm 安装集群
安装集群
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.14 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--node-name=master
有的博客会在安装集群这里指定当前服务的ip地址,在本地机器上没有问题,但是在云服务器上会导致安装失败。这里不指定ip地址会默认使用服务器的私网ip。 后面安装工作节点再使用iptable去做ip转发。
初始化完成后,需要配置k8s的配置信息,才能正常连接到集群
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5.安装网络插件
wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
安装网络插件获取拉取相应的镜像,不配置国内的docker镜像代理,会出现镜像拉取异常。
6.验证
kubectl get nodes
这时,nodes的状态处于 Ready
状态。
单节点集群必须执行下面的命令才能成功创建pod,k8s 调度器默认是不会在master节点上创建pod的
kubectl taint nodes --all node-role.kubernetes.io/master -