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
相关推荐
阿斌_bingyu70920 小时前
ESP32-CAM对接阿里云平台数据透传
阿里云·云计算
kailp21 小时前
1Prompt1Story:为长故事创作赋予角色一致性的AI助手
人工智能·云计算·gpu算力·视频
DavidSoCool1 天前
记一个阿里云CDN域名配置不当引起服务鉴权失效问题
阿里云·云计算·cdn
G皮T1 天前
【弹性计算】异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术
阿里云·fpga开发·云计算·虚拟化·fpga·异构计算·弹性计算
小安运维日记1 天前
CKS认证 | Day3 K8s容器运行环境安全加固
运维·网络·安全·云原生·kubernetes·云计算
淘源码A2 天前
云计算集约化的智慧医院系统,融合4级电子病历的云HIS系统,java版中小医院云HIS源码
云计算·云his·his·电子病历·智慧医院
struggle20252 天前
AWS Bedrock 多代理蓝图存储库使用 CDK、Streamlit 和 LangFuse 运行 AWS Bedrock 多代理 AI 协作的蓝图
运维·人工智能·自动化·云计算·aws
李兆龙的博客2 天前
从一到无穷大 #44:AWS Glue: Data integration + Catalog
云计算·aws
阿里云大数据AI技术2 天前
高效向量检索实践:阿里云百炼生成+Milvus存储技术方案解析
大数据·数据分析·云计算