k8s的安装与简单使用

发布时间:2021-07-20 17:48:22 作者:chen
来源:亿速云 阅读:368

K8s的安装与简单使用

目录

  1. 引言
  2. Kubernetes简介
  3. Kubernetes的安装
  4. Kubernetes的简单使用
  5. Kubernetes的进阶使用
  6. 总结

引言

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它最初由Google开发,现在由Cloud Native Computing Foundation(CNCF)维护。Kubernetes已经成为容器编排的事实标准,广泛应用于生产环境中。

本文将详细介绍Kubernetes的安装与简单使用,帮助读者快速上手Kubernetes。

Kubernetes简介

什么是Kubernetes

Kubernetes是一个用于管理容器化应用程序的开源平台。它提供了自动化部署、扩展、负载均衡、存储编排、自动修复等功能,使得开发者可以专注于应用程序的开发,而不必担心底层基础设施的管理。

Kubernetes的核心概念

Kubernetes的安装

环境准备

在安装Kubernetes之前,需要准备以下环境:

安装Docker

  1. 更新系统包:
   sudo apt-get update
  1. 安装Docker依赖包:
   sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  1. 添加Docker官方GPG密钥:
   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 添加Docker仓库:
   sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  1. 安装Docker:
   sudo apt-get update
   sudo apt-get install -y docker-ce
  1. 启动Docker服务并设置开机自启:
   sudo systemctl start docker
   sudo systemctl enable docker

安装Kubernetes

  1. 添加Kubernetes官方GPG密钥:
   curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  1. 添加Kubernetes仓库:
   sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
  1. 安装Kubernetes组件:
   sudo apt-get update
   sudo apt-get install -y kubelet kubeadm kubectl
  1. 禁用交换分区(Kubernetes要求禁用交换分区):
   sudo swapoff -a
   sudo sed -i '/swap/d' /etc/fstab

初始化Kubernetes集群

  1. 在主节点上初始化Kubernetes集群:
   sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  1. 按照提示配置kubectl:
   mkdir -p $HOME/.kube
   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 安装网络插件(例如Flannel):
   kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  1. 将工作节点加入集群:

在主节点上执行以下命令获取加入集群的命令:

   kubeadm token create --print-join-command

在工作节点上执行获取到的命令,将节点加入集群。

Kubernetes的简单使用

创建Pod

  1. 创建一个Pod的YAML文件(例如nginx-pod.yaml):
   apiVersion: v1
   kind: Pod
   metadata:
     name: nginx-pod
   spec:
     containers:
     - name: nginx-container
       image: nginx:latest
  1. 使用kubectl创建Pod:
   kubectl apply -f nginx-pod.yaml
  1. 查看Pod状态:
   kubectl get pods

创建Deployment

  1. 创建一个Deployment的YAML文件(例如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
  1. 使用kubectl创建Deployment:
   kubectl apply -f nginx-deployment.yaml
  1. 查看Deployment状态:
   kubectl get deployments

创建Service

  1. 创建一个Service的YAML文件(例如nginx-service.yaml):
   apiVersion: v1
   kind: Service
   metadata:
     name: nginx-service
   spec:
     selector:
       app: nginx
     ports:
     - protocol: TCP
       port: 80
       targetPort: 80
     type: LoadBalancer
  1. 使用kubectl创建Service:
   kubectl apply -f nginx-service.yaml
  1. 查看Service状态:
   kubectl get services

使用kubectl命令

  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的进阶使用

配置管理

Kubernetes提供了ConfigMap和Secret两种资源用于管理配置信息。

创建ConfigMap

  1. 创建一个ConfigMap的YAML文件(例如app-config.yaml):
   apiVersion: v1
   kind: ConfigMap
   metadata:
     name: app-config
   data:
     APP_COLOR: blue
     APP_MODE: production
  1. 使用kubectl创建ConfigMap:
   kubectl apply -f app-config.yaml
  1. 在Pod中使用ConfigMap:
   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

创建Secret

  1. 创建一个Secret的YAML文件(例如app-secret.yaml):
   apiVersion: v1
   kind: Secret
   metadata:
     name: app-secret
   type: Opaque
   data:
     username: YWRtaW4=
     password: MWYyZDFlMmU2N2Rm
  1. 使用kubectl创建Secret:
   kubectl apply -f app-secret.yaml
  1. 在Pod中使用Secret:
   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)。

创建PersistentVolume

  1. 创建一个PersistentVolume的YAML文件(例如pv.yaml):
   apiVersion: v1
   kind: PersistentVolume
   metadata:
     name: pv-volume
   spec:
     capacity:
       storage: 1Gi
     accessModes:
       - ReadWriteOnce
     hostPath:
       path: /mnt/data
  1. 使用kubectl创建PersistentVolume:
   kubectl apply -f pv.yaml

创建PersistentVolumeClaim

  1. 创建一个PersistentVolumeClaim的YAML文件(例如pvc.yaml):
   apiVersion: v1
   kind: PersistentVolumeClaim
   metadata:
     name: pvc-claim
   spec:
     accessModes:
       - ReadWriteOnce
     resources:
       requests:
         storage: 1Gi
  1. 使用kubectl创建PersistentVolumeClaim:
   kubectl apply -f pvc.yaml
  1. 在Pod中使用PersistentVolumeClaim:
   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

  1. 创建一个Ingress的YAML文件(例如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
  1. 使用kubectl创建Ingress:
   kubectl apply -f ingress.yaml

创建NetworkPolicy

  1. 创建一个NetworkPolicy的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
  1. 使用kubectl创建NetworkPolicy:
   kubectl apply -f network-policy.yaml

总结

本文详细介绍了Kubernetes的安装与简单使用,包括环境准备、Docker安装、Kubernetes安装、集群初始化、Pod、Deployment、Service的创建与使用,以及kubectl命令的使用。此外,还介绍了Kubernetes的进阶使用,包括配置管理、存储管理和网络管理。

Kubernetes强大的容器编排平台,能够极大地简化容器化应用程序的部署和管理。通过本文的学习,读者可以快速上手Kubernetes,并在实际项目中应用这些知识。希望本文能够帮助读者更好地理解和掌握Kubernetes的使用。

推荐阅读:
  1. redis的安装和简单使用
  2. Nginx简单使用与详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

k8s

上一篇:Linux下redis安装和部署方式

下一篇:怎么修改gazebo物理参数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》