CentOS7 部署K8S集群
步骤
1-8 master、node节点都要执行
9-10、12 master节点执行
11 node节点执行
部署规划
192.168.28.168 k8s-master
192.168.28.166 k8s-node1
192.168.28.100 k8s-node2
步骤1
关闭防火墙
systemctl stop firewalld.service #临时关闭
systemctl disable firewalld.service #永久关闭
systemctl status firewalld.service #查看防火墙状态
备注:必须关闭
步骤2
关闭selinux(Linux 的一个安全子系统)
setenforce 0
步骤3
关闭swap
swapoff -a #临时关闭
vim /etc/fstab #注释swap,永久关闭
free #查看状态
步骤4
添加主机名与IP对应的关系
vim /etc/hosts #最末行添加
192.168.28.168 k8s-master
192.168.28.166 k8s-node1
192.168.28.100 k8s-node2
步骤5
将桥接的IPV4流量传递到iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #加载所有的配置文件
步骤6
安装Docker
- [ 1] 下载并安装
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo #下载
yum -y install docker-ce-18.06.1.ce-3.el7 #安装
- [ 2] 设置开机启动
systemctl enable docker
systemctl start docker
- [ 3] 查看Docker版本
docker --version
步骤7
添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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
步骤8
安装kubeadm、kubelet和kubectl
在部署kubernetes时,要求master node和worker node上的版本保持一致
安装最新版
yum makecache fast #本地缓存软件包信息
yum install -y kubelet kubeadm kubectl #安装
注:使用yum安装程序时,提示公钥尚未安装
跳过公钥检查,如下:
yum install cri-tools-1.13.0-0.x86_64 --nogpgcheck
yum install kubeadm-1.18.2-0.x86_64 --nogpgcheck
yum install kubectl-1.18.2-0.x86_64 --nogpgcheck
设置开机启动
systemctl enable kubelet #设置开机启动
步骤9
部署Kubernetes Master
注:master节点必须内存2G+,CPU 2个以上
- [ 1] 初始化kubeadm
kubeadm init \
--apiserver-advertise-address=192.168.28.168\ #修改成自己master的IP
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
初始化成功,复制最末两行用于node节点加入集群
出现下图的镜像则表示初始化成功
- [ 2] 使用kubectl工具
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
步骤10
安装Pod网络插件
- [ 1] 安装weave网络插件
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
- [ 2] 查看是否部署成功
kubectl get pods -n kube-system
weave状态为Running则安装成功
步骤11
Node节点加入集群
kubeadm join 192.168.28.168:6443 --token o1jvk3.r2mb72a47hw5o7k6 \
--discovery-token-ca-cert-hash sha256:db535e0b86396387fe6e911b964a5edb85d16313056d89e998384d5537b44ea1
出现下图提示则加入集群成功
master节点输入命令
kubectl get node
状态都为Running则成功
注:如果出现如下警告提示
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “system”. Please follow the guide at https://kubernetes.io/docs/setup/cri/
更改docker的启动参数,创建daemon.json文件,内容为:
{
“exec-opts”: [“native.cgroupdriver=systemd”]
}
放入/etc/docker文件夹下
重启docker
systemctl daemon-reload
systemctl restart docker
注:如果一直卡在 “Running pre-flight checks” 上,则很可能是时间未同步,token失效导致
检查master、node时间是否同步?
date
执行如下命令同步时间
ntpdate time.nist.gov
如果token忘记了,则可以通过如下操作:
查看token,如果token失效,则重新生成一个(master节点操作)
kubeadm token list
kubeadm token create
获取ca证书sha256编码hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
注:加入集群失败
rm -rf $HOME/.kube #删除集群前先执行
kubeadm reset #删除集群
yum clean all #清除缓存
重新安装kubeadm,kubelet和kubectl
步骤12
测试kubernetes集群
kubectl create deployment nginx --image=nginx #创建容器,存放nginx镜像
kubectl expose deployment nginx --port=80 --type=NodePort #暴露端口
kubectl get pod,svc
kubectl get pod,svc -o wide
部署成功
访问测试
curl 192.168.28.100:30906
成功