Kubernetes 是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s) 是 Google 开源的容器集群管理系统(谷歌内部:Borg)。在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
Kubernetes 是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。
目录
2、关闭swap分区和selinux(master、node均执行)
4、默认容器引擎为docker(master、node均执行)
5、配置cri-docker服务(master、node均执行)
9、创建kubectl(一般master执行,也可配置node)
注:后续将分步讲解k8s安装(container版本),部署ingress-nginx、MetalLB等。
一、安装docker(2+节点)
参考地址:《如何安装任意版本docker》
注:本文使用方式一
二、规划资源
本文通过2节点部署,如下规划
|--------------|------------|
| IP | 用途 |
| 10.211.55.16 | master |
| 10.211.55.22 | node1 |
三、部署及配置
1、修改主机名
hostnamectl set-hostname master
echo "10.211.55.16 master
10.211.55.22 node1" >> /etc/hosts

hostnamectl set-hostname node1
echo "10.211.55.16 master
10.211.55.22 node1" >> /etc/hosts

2、关闭swap分区和selinux(master、node均执行)
1)临时生效
关闭swap分区:swapoff -a
关闭selinux:setenforce 0

2)永久生效
关闭swap分区:
vim /etc/fstab
找到类似下面的行(如果有)并注释,重启后生效:
#UUID=2eca519a-00ef-4183-8562-3ff29b3e18c9 none swap defaults 0 0

关闭selinux:
vim /etc/selinux/config
修改SELINUX为SELINUX=disabled,重启后生效


3、安装k8s软件(master、node均执行)
x86_64架构:
dnf install kubernetes-kubeadm kubernetes https://gitee.com/koji_docker/cri-dockerd/releases/download/v0.4.7/cri-dockerd-0.4.7-3.an23.x86_64.rpm -y
aarch64架构:
dnf install kubernetes-kubeadm kubernetes https://gitee.com/koji_docker/cri-dockerd/releases/download/v0.4.7/cri-dockerd-0.4.7-3.an23.aarch64.rpm -y


4、默认容器引擎为docker(master、node均执行)
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///var/run/cri-dockerd.sock
image-endpoint: unix:///var/run/cri-dockerd.sock
timeout: 10
debug: false
EOF

5、配置cri-docker服务(master、node均执行)
vim /usr/lib/systemd/system/cri-docker.service
增加 --network-plugin=cni --pod-infra-container-image=docker.1ms.run/kubesphere/pause:3.9

6、启动服务并设置开机自启(master、node均执行)
systemctl enable docker cri-docker kubelet --now

7、初始化k8s集群(master执行)
kubeadm init --kubernetes-version=1.29.15 --apiserver-advertise-address=10.211.55.16 --image-repository docker.1ms.run/kubesphere --service-cidr=1.1.0.0/16 --pod-network-cidr=1.2.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock


8、node加入集群(node执行)
kubeadm join 10.211.55.16:6443 --token hwhyis.bs0z0egyjdqblq4k \
--discovery-token-ca-cert-hash sha256:71b5d62b55056d6ddbc186bed9b60688d25635c10939766b027f6f8b3b28b793 --cri-socket=unix:///var/run/cri-dockerd.sock

9、创建kubectl(一般master执行,也可配置node)
1)临时生效
export KUBECONFIG=/etc/kubernetes/admin.conf
2)永久生效
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

10、创建calico网络(master执行)
1)下载calico.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml

2)修改为国内镜像站
sed -i "s/docker.io/docker.1ms.run/g" calico.yaml

3)应用calico网络
kubectl apply -f calico.yaml

4)查看状态
kubectl get nodes

四、验证
1、下载demo
git clone https://gitee.com/koji_docker/k8s.git

2、部署
kubectl apply -f k8s/demo/myos.yaml

3、查看pod
kubectl get pods -n demo

4、容器访问及执行命令
kubectl exec -it -n demo myos-5bc54f97dc-f8xnm -- bash
