centos搭建k8s集群


环境准备

至少准备三台服务器,其中一台作为master,另外两台作为worker

  • 192.168.118.128(master)
  • 192.168.118.129(worker)
  • 192.168.118.130(worker)

在所有机器执行以下操作

#各个机器设置自己的域名
hostnamectl set-hostname xxxx
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
#关闭swap
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab
#允许 iptables 检查桥接流量
cat <
cat <
sudo sysctl --system
cat <
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
chmod +x ./images.sh && ./images.sh

初始化主节点

ip a

获取到主节点的ip,并在所有机器执行如下命令:

#所有机器添加master域名映射,以下需要修改为自己的
echo "192.168.118.128  cluster-endpoint" >> /etc/hosts

开始初始化主节点,注意要替换主节点的ip(apiserver-advertise-address的值)

#主节点初始化
kubeadm init \
--apiserver-advertise-address=192.168.118.128 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

等待执行完成,会看到输出如下内容,先复制出来:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join cluster-endpoint:6443 --token wc5gu7.s7pz9hmegoaoijeo \
    --discovery-token-ca-cert-hash sha256:dd3f285d72281abdb8403afee914fb56b954f205f313b9949e42e4a57b5c3cb3 \
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join cluster-endpoint:6443 --token wc5gu7.s7pz9hmegoaoijeo \
    --discovery-token-ca-cert-hash sha256:dd3f285d72281abdb8403afee914fb56b954f205f313b9949e42e4a57b5c3cb3
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#查看集群所有节点
kubectl get nodes

在master上安装calico

vi calico.yaml

我把配置文件存在oss上了,保存下来
https://yoonada.oss-cn-shenzhen.aliyuncs.com/k8s/kubernetes/calico.yaml

kubectl apply -f calico.yaml

在work机器上(129、130)执行如下命令(上面复制那部分):

kubeadm join cluster-endpoint:6443 --token wc5gu7.s7pz9hmegoaoijeo \
    --discovery-token-ca-cert-hash sha256:dd3f285d72281abdb8403afee914fb56b954f205f313b9949e42e4a57b5c3cb3

回到主节点(128)

安装kubernetes-dashboard

从oss下载下来

https://yoonada.oss-cn-shenzhen.aliyuncs.com/k8s/kubernetes/dashboard.yaml

搜索 centos01,替换为自己的master的主机名

kubectl apply -f dashboard.yaml
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
type: ClusterIP 改为 type: NodePort

下载 dash.yaml
https://yoonada.oss-cn-shenzhen.aliyuncs.com/k8s/kubernetes/dashboard.yaml

kubectl apply -f dash.yaml

查看登录token

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

查看端口

kubectl get svc -A |grep kubernetes-dashboard

主节点+ip访问控制台

https://192.168.118.128:30125/#/login

密码为刚才生成的token


文章作者: YoonaDa
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 YoonaDa !
  目录
Copyright © 2021-2023 YoonaDa | Powered by Hexo | Theme Matery
  站点总字数: 38.8k  |  总访问量:   |  总访问人数: