[CentOS7 部署K8S集群]
一、部署规划
192.168.38.11 k8s-master
192.168.38.12 k8s-node1
192.168.38.13 k8s-node2
二、基础环境
1、关闭防火墙
systemctl stop firewalld
2、关闭selinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
setenforce 0
3、关闭swapip
swapoff -a 临时关闭
free 可以通过这个命令查看swap是否关闭了
vim /etc/fstab 永久关闭
4、添加主机名与ip对应关系
cat >> /etc/hosts << EOF
172.16.1.38 k8s-master
172.16.1.149 k8s-node1
172.16.1.150 k8s-node2
EOF
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
- a、下载并安装
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
- b、设置开机自启
systemctl enable docker
systemctl start docker
- c、查看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
yum clean all
yum makecache fast
yum install -y kubelet kubeadm kubectl
yum install -y cri-tools-1.12.0-0.x86_64 --nogpgcheck
yum install -y kubectl-1.14.1-0.x86_64 --nogpgcheck
yum install -y kubeadm-1.14.1-0.x86_64 --nogpgcheck
systemctl enable kubelet
三、master节点
1、部署Kubernetes Master
- 1)初始化kubeadm
kubeadm init
–apiserver-advertise-address=172.16.1.38
–image-repository registry.aliyuncs.com/google_containers
–kubernetes-version v1.20.2
–service-cidr=10.1.0.0/16
–pod-network-cidr=10.244.0.0/16
当出现如下结果,表示初始化顺利
建议至少2 cpu ,2G,非硬性要求,1cpu,1G也可以搭建起集群。但是:
1个cpu的话初始化master的时候会报 [WARNING NumCPU]: the number of available CPUs 1 is less than the required 2
部署插件或者pod时可能会报warning:FailedScheduling:Insufficient cpu, Insufficient memory
如果出现这种提示,说明你的虚拟机分配的CPU为1核,需要重新设置虚拟机master节点内核数。
查看镜像
docker images
- 2)使用kubectl工具
复制如下命令直接执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config
下面就可以直接使用kubectl命令了
2、安装Pod网络插件(CNI)**
- 1)安装插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 2)查看是否部署成功
`$ kubectl get pods -n kube-system`
- 3)再次查看node,可以看到状态为ready
安装失败了,怎么清理环境重新安装啊?执行一条命令:
kubeadm reset
四、Node节点加入集群
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.20.2
复制上面命令,在node节点上执行
kubeadm join 172.16.1.38:6443 --token zc8045.22yoyqrxczjj99ym
–discovery-token-ca-cert-hash sha256:f1040a72a216dbb4f8321e7530b89a371420205e782cff8f0c876a0c8aae7cb0
执行成功后:
再通过master节点查看node,发现node节点已以成功加入集群,并且Status状态为Ready
如果token忘记了,则可以通过如下操作:
1)查看token,如果token失效,则重新生成一个
kubeadm token list
kubeadm token create
2)获取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/^.* //’
3)节点加入集群
kubeadm join 172.16.1.38:6443 --token zc8045.22yoyqrxczjj99ym \
--discovery-token-ca-cert-hash sha256:f1040a72a216dbb4f8321e7530b89a371420205e782cff8f0c876a0c8aae7cb0
五、测试kubernetes集群
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
kubectl get pod,svc -o wide
通过浏览器访问:http://172.16.1.38:30758可以正常访问
六、使用rancher管理k8s集群
1、安装rancher
- 单容器内置数据部署
docker run -d --privileged --restart=unless-stopped
-p 80:80 -p 443:443
–privileged
rancher/rancher:latest
- 其他部署模式
参考官方文档:https://docs.rancher.cn/docs/rancher2/quick-start-guide/deployment/quickstart-manual-setup/_index
2、导入k8s集群
- 获取执行命令
集群 —> 添加集群 —> 导入 —> 获取注册命令
- k8s-master注册
根据情况在k8s-master执行对应的注册命令
- 查看cattle-cluster-agent状态
kubectl get pods -n cattle-system
确保cattle-cluster-agent-*的状态为Running