您好,登录后才能下订单哦!
Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它最初由Google开发,现在由Cloud Native Computing Foundation(CNCF)维护。Kubernetes已经成为容器编排的事实标准,广泛应用于生产环境中。
本文将详细介绍Kubernetes的安装与简单使用,帮助读者快速上手Kubernetes。
Kubernetes是一个用于管理容器化应用程序的开源平台。它提供了自动化部署、扩展、负载均衡、存储编排、自动修复等功能,使得开发者可以专注于应用程序的开发,而不必担心底层基础设施的管理。
在安装Kubernetes之前,需要准备以下环境:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
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/coreos/flannel/master/Documentation/kube-flannel.yml
在主节点上执行以下命令获取加入集群的命令:
kubeadm token create --print-join-command
在工作节点上执行获取到的命令,将节点加入集群。
nginx-pod.yaml
): apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx-container
image: nginx:latest
kubectl apply -f nginx-pod.yaml
kubectl get pods
nginx-deployment.yaml
): 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-container
image: nginx:latest
kubectl apply -f nginx-deployment.yaml
kubectl get deployments
nginx-service.yaml
): apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
kubectl apply -f nginx-service.yaml
kubectl get services
kubectl cluster-info
kubectl get nodes
kubectl logs <pod-name>
kubectl exec -it <pod-name> -- /bin/bash
kubectl delete pod <pod-name>
kubectl delete deployment <deployment-name>
kubectl delete service <service-name>
Kubernetes提供了ConfigMap和Secret两种资源用于管理配置信息。
app-config.yaml
): apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: blue
APP_MODE: production
kubectl apply -f app-config.yaml
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app-container
image: nginx:latest
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: app-config
key: APP_COLOR
app-secret.yaml
): apiVersion: v1
kind: Secret
metadata:
name: app-secret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
kubectl apply -f app-secret.yaml
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app-container
image: nginx:latest
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: app-secret
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: app-secret
key: password
Kubernetes提供了多种存储管理方式,包括PersistentVolume(PV)和PersistentVolumeClaim(PVC)。
pv.yaml
): apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-volume
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
kubectl apply -f pv.yaml
pvc.yaml
): apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
kubectl apply -f pvc.yaml
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app-container
image: nginx:latest
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: storage
volumes:
- name: storage
persistentVolumeClaim:
claimName: pvc-claim
Kubernetes提供了多种网络管理方式,包括Service、Ingress和NetworkPolicy。
ingress.yaml
): apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80
kubectl apply -f ingress.yaml
network-policy.yaml
): apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: app-network-policy
spec:
podSelector:
matchLabels:
app: app
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 80
kubectl apply -f network-policy.yaml
本文详细介绍了Kubernetes的安装与简单使用,包括环境准备、Docker安装、Kubernetes安装、集群初始化、Pod、Deployment、Service的创建与使用,以及kubectl命令的使用。此外,还介绍了Kubernetes的进阶使用,包括配置管理、存储管理和网络管理。
Kubernetes强大的容器编排平台,能够极大地简化容器化应用程序的部署和管理。通过本文的学习,读者可以快速上手Kubernetes,并在实际项目中应用这些知识。希望本文能够帮助读者更好地理解和掌握Kubernetes的使用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。