K8S虚拟机集群配置
一、基本环境准备工作
设置hostname
1 | hostnamectl set-hostname master |
1 | hostnamectl set-hostname node1 |
1 | hostnamectl set-hostname node2 |
关闭防火墙
1 | systemctl stop firewalld |
查看ip
1 | ip addr |
master:192.168.19.101
node1: 192.168.19.102
node2: 192.168.19.103
设置host和ip绑定
1 | vim /etc/hosts |
三个节点相互可以ping通
1 | ping master |
系统初始化
关闭selinux
1 | sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 |
关闭 swap
1 | swapoff -a # 临时 |
将桥接的 IPv4 流量传递到 iptables 的链
1 | # 配置 |
时间同步
1 | yum install ntpdate -y |
二、所有节点安装 Docker/kubeadm/kubelet
Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装 Docker。
(1)安装 Docker
1 | wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo |
(2)添加阿里云 YUM 软件源
设置仓库地址
1 | cat > /etc/docker/daemon.json << EOF |
添加 yum 源
1 | cat > /etc/yum.repos.d/kubernetes.repo << EOF |
(3)安装 kubeadm,kubelet 和 kubectl
1 | yum install -y kubelet kubeadm kubectl |
三、部署 Kubernetes Master
在 192.168.19.101(Master)执行
1 | kubeadm init --apiserver-advertise-address=192.168.19.101 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.23.6 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 |
安装成功后,复制如下配置并执行
1 | mkdir -p $HOME/.kube |
四、加入 Kubernets Node
获取master节点的token
如果 token 已经过期,就重新申请
1 | kubeadm token create |
token 没有过期可以通过如下命令获取
1 | kubeadm token list |
获取 –discovery-token-ca-cert-hash 值,得到值后需要在前面拼接上 sha256:
1 | openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \ |
在node节点输入
1 | kubeadm join 192.168.19.101:6443 --token 01ypzs.0af41ttdb3o6ush9 --discovery-token-ca-cert-hash sha256:7b01f7fe1f03a38b845c506eccad67e30f781ac6cc7877e00af45f33b8b3cdf4 |
查看nodes
输入kubectl get componentstatus查看组件状态
输入kubectl get pods查看pod
输入kubectl get pods -n kube-system查看指定命名空间的pod
最上面两个pod没用准备好是因为没有网络
五、部署CNI网络插件
在/opt下创建k8s文件夹
在/opt/k8s下
1 | curl https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml -O |
修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改为与初始化的 cidr 相同
修改calico.yaml 文件中的 镜像地址
1 | sed -i 's#docker.io/##g' calico.yaml |
构建应用
1 | kubectl apply -f calico.yaml |