在 CentOS 上部署应用到 Kubernetes 的实操指南
一 环境准备与前置条件
sudo yum install -y ntpdate && sudo ntpdate ntp.aliyun.com。sudo swapoff -a,并在 /etc/fstab 注释 swap 行。sudo modprobe br_netfilterecho 'net.bridge.bridge-nf-call-iptables=1' | sudo tee -a /etc/sysctl.confecho 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.confsudo sysctl -psudo systemctl stop firewalld && sudo systemctl disable firewalldsudo setenforce 0 && sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config二 安装容器运行时与 Kubernetes 组件
sudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.iosudo systemctl enable --now dockersudo mkdir -p /etc/dockerecho '{"exec-opts":["native.cgroupdriver=systemd"]}' | sudo tee /etc/docker/daemon.jsonsudo systemctl restart dockercat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearchenabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgEOFsudo yum install -y kubelet kubeadm kubectlsudo systemctl enable --now kubelet三 初始化 Master 节点并加入 Node
sudo kubeadm init --apiserver-advertise-address=<Master_IP> --pod-network-cidr=10.244.0.0/16mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlsudo kubeadm join <Master_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>kubectl get nodeskubectl get pods -A四 部署示例应用 Nginx
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
kubectl apply -f nginx-deployment.yamlkubectl get deploy,svc,podskubectl create deployment nginx --image=nginxkubectl expose deployment nginx --port=80 --type=NodePortkubectl get svc nginx 查看分配的 NodePort 后访问。五 常见问题与排查要点
kubectl get pods -n kube-flannel),以及节点网络与路由。kubeadm token create --print-join-command 重新生成。kubeadm config images pull 拉取所需镜像。