简单部署k8s
前言
初次学习,理解并不是很清楚
准备环境
服务器规划:
| 角色 | IP地址 |
|---|---|
| k8s-master | 192.168.11.130 |
| k8s-node1 | 192.168.11.134 |
| k8s-node2 | 192.168.11.135 |
服务器要求:
建议最小硬件配置:2核CPU、2G内存、20G硬盘。
服务器可以访问互联网,会联网下载镜像。
软件环境:
|软件|版本|
|:-:|:-:|
|操作系统|CentOS7.9_x64|
|Docker|24.0.0(CE)|
|Kubernetes|1.28|
初始化配置
关闭 Selinux
1 | sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 |
关闭 Swap
1 | swapoff -a # 临时 |
设置主机名
1 | hostnamectl set-hostname k8s-master |
确保网络桥接的数据包经过 Iptables 处理,启用相关的内核参数
1 | cat > /etc/sysctl.d/k8s.conf << EOF |
安装 Docker
下载安装
1 | wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo |
配置镜像下载加速器和设置 Cgroup 驱动
这一步可以参考最新的docker可用镜像源设置1
2
3
4
5
6
7
8cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl restart docker
docker info
安装 cri-dockerd(Docker 与 Kubernetes 通信的中间程序)
测试最新版本0.3.15安装在centos7.9缺少依赖,但是显示的依赖包已安装,安装旧一版本0.3.14没什么问题,可能版本和我最简的centos7.9有些问题,下载地址为:
https://github.com/Mirantis/cri-dockerd/releases1
2wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm
指定依赖镜像地址为国内镜像地址:
修改ExecStart=/usr/bin/cri-dockerd —container-runtime-endpoint fd://部分,添加以下参数:1
2vi /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.91
2systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker
部署 Kubernetes 集群
添加阿里云 YUM 软件源
1 | cat > /etc/yum.repos.d/kubernetes.repo << EOF |
安装 kubeadm,kubelet 和 kubectl
我一般默认安装最新版yum install -y kubelet kubeadm kubectl,这里我指定下版本1
2yum install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2
systemctl enable kubelet
初始化 Master 节点
1 | kubeadm init \ |
初始化完成后,根据提示信息,拷贝 kubectl 工具认证文件到默认路径:1
2
3mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
使用 kubectl 工具查看节点状态:1
kubectl get nodes
ps:由于网络插件还没有部署,节点会处于“NotReady”状态
将 Node 节点加入集群
1 | kubeadm join 192.168.11.130:6443 --token pt332w.pz2sldn46h9ynfsw --discovery-token-ca-cert-hash sha256:b6bdbc14bee762e5a7cfc24aa60cc842077180ae6595eb68b09d0333243cfa0c --cri-socket=unix:///var/run/cri-dockerd.sock |
安装网络组件
Pod 网络:Kubernetes 需要一个 Pod 网络插件来管理集群中的网络通信。你可以选择一个适合你环境的网络插件(如 Flannel、Calico、Weave 等),并使用 kubectl 命令来部署。
这里使用 Calico 作为 Kubernetes 的网络插件,负责集群中网络通信。
创建 Calico 网络组件的资源:1
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
配置安全策略1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18vim network-policy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress:
- {}
egress:
- {}
kubectl apply -f network-policy.yaml
应用完成后,等待 5 分钟后,查看 Pod 运行状态:1
kubectl get pods -n kube-system
如果出现问题,可能是还未下载完,也可以查看日志排查1
kubectl logs -n kube-system <pod-name>
ps:如果 Pod 处于“ContainerCreating”状态说明在下载镜像中,需耐心等待
安装 Dashboard
Dashboard 是官方提供的一个 UI,可用于基本管理 K8s 资源。
安装
1 | kubectl apply -f kubernetes-dashboard.yaml |
浏览器访问“https://<节点 IP 地址>:30001”,将看到 Dashboard 登录界面。
创建服务账号并授权管理员权限:
1 | # 创建用户 |
使用输出的 Token 登录 Dashboard,将进入到首页
至此,k8s部署完成

