您好,登录后才能下订单哦!
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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。