Linux云计算SRE-第二十四周

1、部署1master 3node四节点kubernetes集群。

一、环境准备
bash 复制代码
1. 系统要求
   - OS: Ubuntu 22.04 LTS
   - 节点配置:2核CPU/4GB内存(master/node)
   - 网络:节点间通信畅通,可访问互联网或国内镜像源
   - 独占的hostname、MAC地址以及product_uuid,主机名能够正常解析
   - 放行由Kubernetes使用到的各端口,或直接禁用iptables
   
节点规划:
	IP地址				主机名			 角色
192.168.10.6	k8s-master01.magedu.com	Master
192.168.10.11	k8s-node01.magedu.com	Worker
192.168.10.12	k8s-node02.magedu.com	Worker
192.168.10.13	k8s-node03.magedu.com	Worker

2. 系统配置
  
   全局配置(所有节点执行)
# 配置 hosts 文件
cat <<EOF >> /etc/hosts
192.168.10.6    kubeapi.magedu.com k8s-master01
192.168.10.11   k8s-node01.magedu.com k8s-node01
192.168.10.12   k8s-node02.magedu.com k8s-node02
192.168.10.13   k8s-node03.magedu.com k8s-node03
EOF

# 设置唯一主机名(按节点执行)
hostnamectl set-hostname k8s-master01  # Master 节点
hostnamectl set-hostname k8s-node01    # Node01
hostnamectl set-hostname k8s-node02    # Node02
hostnamectl set-hostname k8s-node03    # Node03
二、系统初始化
bash 复制代码
1. 禁用Swap
   swapoff -a && sed -i '/swap/d' /etc/fstab
   systemctl mask --now dev-sd*.swap

2. 禁用防火墙
   ufw disable

3. 时间同步
   apt install chrony -y
   systemctl enable --now chrony
   
4. 可在master主机上执行下列命令对3台worker主机进行环境配置或直接在worker主机上执行命令
   ssh 192.168.10.11 "swapoff -a && sed -i '/swap/d' /etc/fstab&&systemctl mask --now dev-sd*.swap"
   ssh 192.168.10.11 "ufw disable"
   ssh 192.168.10.11 "apt update&&apt install chrony -y&&systemctl enable --now chronyd"
   ssh 192.168.10.11 "sed -i 's/pool .*/pool ntp.aliyun.com iburst/g' /etc/chrony/chrony.conf&&systemctl restart chronyd"
5. 内核参数优化
cat <<EOF > /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay && modprobe br_netfilter

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
sysctl --system
三、容器运行时安装(Containerd)(所有节点)
bash 复制代码
1. 安装Containerd(所有节点执行)
# 添加阿里云Docker源
apt update
apt -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 安装Containerd
apt update && apt install -y containerd.io

# 配置Containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

# 修改配置文件(关键步骤)
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sed -i 's#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml

# 配置镜像加速(可选)
# 编辑/etc/containerd/config.toml,添加以下内容到对应位置:
# [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
#   [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
#     endpoint = ["https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com"]
#   [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
#     endpoint = ["https://registry.aliyuncs.com/google_containers"]

# 重启Containerd
systemctl restart containerd && systemctl enable containerd

2. 配置crictl客户端
# 编辑/etc/crictl.yaml
cat <<EOF > /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: true
EOF
四、Kubernetes 组件安装(所有节点)
bash 复制代码
1. 配置阿里云镜像源
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list

2. 安装 kubelet/kubeadm/kubectl
apt update && apt install -y kubelet=1.31.2-1.1 kubeadm=1.31.2-1.1 kubectl=1.31.2-1.1
systemctl enable kubelet
五、Master 节点初始化
bash 复制代码
kubeadm config images list --image-repository=registry.aliyuncs.com/google_containers
kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
bash 复制代码
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --control-plane-endpoint="kubeapi.magedu.com" --kubernetes-version=v1.31.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --token-ttl=0 --upload-certs

配置 kubectl:

bash 复制代码
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
六、部署Flannel网络插件
bash 复制代码
# 下载并修改Flannel配置(替换镜像地址)
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
sed -i 's#ghcr.io/flannel-io/flannel#registry.aliyuncs.com/google_containers/flannel#g' kube-flannel.yml
sed -i 's#ghcr.io/flannel-io/flannel-cni#registry.aliyuncs.com/google_containers/flannel-cni#g' kube-flannel.yml

# 应用配置
kubectl apply -f kube-flannel.yml

# 检查Pod状态
kubectl get pods -n kube-system
kubectl get pods -n kube-flannel
七、Worker 节点加入集群
bash 复制代码
1. 获取 Join 命令(Master 节点执行)
kubeadm token create --print-join-command
kubeadm join kubeapi.magedu.com:6443 --token nbjg5c.a56kyh7w017w2gbv --discovery-token-ca-cert-hash sha256:75114c3944106297de81e553513cec987678aeb989466a511a9643716e110ed5

2. 所有 Worker 节点执行 Join 命令
kubeadm join kubeapi.magedu.com --token nbjg5c.a56kyh7w017w2gbv --discovery-token-ca-cert-hash sha256:75114c3944106297de81e553513cec987678aeb989466a511a9643716e110ed5
八、验证集群状态

root@k8s-master01:~# kubectl get nodes -o wide

2、部署运行Wordpress;

bash 复制代码
一、 克隆代码仓库
git clone https://github.com/iKubernetes/learning-k8s.git
cd learning-k8s/wordpress/

 二、 部署 MySQL(临时存储)
# 创建命名空间
kubectl create namespace blog
# 部署 MySQL
kubectl apply -f mysql-ephemeral/ -n blog
# 等待 MySQL Pod 启动
kubectl get pods -n blog -l app=mysql -w

 三、 部署 WordPress
# 部署 WordPress(Apache 版本)
kubectl apply -f wordpress-apache-ephemeral/ -n blog
# 验证 WordPress 状态
kubectl get pods -n blog -l app=wordpress -w

 四、 暴露服务并访问
​# 获取 NodePort
kubectl get svc -n blog wordpress
# 访问地址(示例)
# http://192.168.10.11:<NodePort>

3、命令式命令部署运行demoapp,验证Pod删除、扩容、更新等功能;

bash 复制代码
一、 创建 Deployment
kubectl create deployment demoapp --image=nginx:1.23

二、 验证 Pod 运行
kubectl get pods -l app=demoapp

三、 扩容到 3 副本
kubectl scale deployment demoapp --replicas=3
kubectl get pods -l app=demoapp

四、 删除 Pod 并观察自愈
kubectl delete pod <Pod名称>
kubectl get pods -l app=demoapp -w

五、 滚动更新镜像
kubectl set image deployment/demoapp nginx=nginx:1.24
kubectl rollout status deployment/demoapp

六、 清理资源
kubectl delete deployment demoapp
相关推荐
24k小善2 小时前
ApacheJmeter使用权威指南
java·大数据·spring·云计算
阿里云大数据AI技术4 小时前
通过阿里云Milvus与通义千问VL大模型,快速实现多模态搜索
大数据·云计算
满怀10158 小时前
【计算机网络】现代网络技术核心架构与实战解析
网络协议·tcp/ip·计算机网络·架构·云计算·网络工程
网络风云8 小时前
云计算领域需掌握的核心技术
云计算
XINVRY-FPGA9 小时前
XCZU19EG-2FFVC1760I Xilinx赛灵思FPGA Zynq UltraScale+MPSoC
c++·嵌入式硬件·阿里云·fpga开发·云计算·硬件工程·fpga
Johny_Zhao9 小时前
DeepSeek在IT运维中的实战应用与价值创新
人工智能·ai·信息安全·云计算·系统运维·itsm·deepseek
容器魔方10 小时前
KubeEdge边缘设备管理系列(六):Mapper-Framework开发示例
云原生·容器·云计算
佳腾_20 小时前
【web服务_负载均衡Nginx】二、Nginx 核心技术之负载均衡与反向代理
前端·nginx·云计算·负载均衡·web中间件
Saggitarxm21 小时前
阿里云镜像加速仅支持阿里云产品了
阿里云·docker·云计算·镜像加速
TIF星空21 小时前
【在阿里云或其他 CentOS/RHEL 系统上安装和配置 Dante SOCKS5 代理服务】
经验分享·笔记·阿里云·centos·云计算