在 Ubuntu 上使用 Kubernetes(k8s)部署应用,通常分为 环境准备 → 集群搭建 → 应用部署 三个步骤。下面给你一套常用且实用的方案,适合学习和生产入门。
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab
sudo hostnamectl set-hostname master
sudo apt update
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
如果是多节点,使用
kubeadm join加入 worker 节点
kubectl create deployment nginx --image=nginx:latest
kubectl expose deployment nginx --port=80 --type=NodePort
查看访问端口:
kubectl get svc
浏览器访问:
http://<节点IP>:<NodePort>
nginx.yamlapiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
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-svc
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080
kubectl apply -f nginx.yaml
kubectl get pods
kubectl get svc
kubectl get nodes
kubectl get pods -A
kubectl describe pod <pod名>
kubectl logs <pod名>
kubectl delete -f nginx.yaml
sudo snap install microk8s --classic
microk8s enable dns storage ingress
如果你愿意,我可以:
你现在是 学习环境 还是 生产服务器?