您的位置:

Kubernetes版本详解

一、Kubernetes版本升级

Kubernetes不断更新版本,为了让使用者有更优秀的使用体验,并提供更好的功能。升级Kubernetes版本,可以获得更好的性能,更完整的功能和更好的安全性。以下是Kubernetes版本升级的步骤:

# 停止Kubernetes组件
sudo systemctl stop kubelet
sudo systemctl stop kube-proxy
sudo systemctl stop kube-apiserver
sudo systemctl stop kube-controller-manager
sudo systemctl stop kube-scheduler

# 下载新版本的Kubernetes二进制文件,然后解压到/usr/bin目录中
tar -xzvf kubernetes-server-linux-amd64.tar.gz
sudo cp kubernetes/server/bin/kube-apiserver /usr/bin/
sudo cp kubernetes/server/bin/kube-controller-manager /usr/bin/
sudo cp kubernetes/server/bin/kube-scheduler /usr/bin/
sudo cp kubernetes/server/bin/kubectl /usr/bin/


# 修改Kubernetes配置文件
sudo vim /etc/kubernetes/apiserver
sudo vim /etc/kubernetes/controller-manager
sudo vim /etc/kubernetes/scheduler

# 修改kubelet配置文件
sudo vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

# 启动Kubernetes组件
sudo systemctl daemon-reload
sudo systemctl start kube-proxy
sudo systemctl start kubelet
sudo systemctl start kube-apiserver
sudo systemctl start kube-scheduler
sudo systemctl start kube-controller-manager

二、Kubernetes版本差异

Kubernetes的版本升级会出现一些差异。这里我们列出了1.12和1.16版本的差异:

1、Kubernetes1.16支持IPv6,1.12不支持

2、1.16支持Pod和Service的Topology Spread Constraints(拓扑约束策略)

3、1.16支持Pod Startup Probe,1.12不支持,以及Live Probe失败时控制重试次数

4、1.16支持Kubectl生成CRD YAML文件,1.12不支持

三、Kubernetes编程

Kubernetes编程是指使用API对象构建应用程序,这些对象可以部署,扩展和控制容器化应用程序。Kubernetes API支持多种编程语言,如Go、Java、Python等。

Kubernetes API可以使用Kubectl和Kubeconfig文件进行交互,也可以使用API客户端进行自动化处理。以下示例使用Python API客户端。

from kubernetes import client, config
config.load_kube_config()
v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
    print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

四、Kubernetes版本都有哪些

当前Kubernetes有以下版本:

1、1.0

2、1.1

3、1.2

4、1.3

5、1.4

6、1.5

7、1.6

8、1.7

9、1.8

10、1.9

11、1.10

12、1.11

13、1.12

14、1.13

15、1.14

16、1.15

17、1.16

18、1.17

注意:Kubernetes版本支持周期为9个月,支持周期结束后就需要升级到新版本,以获得支持。

五、Kubernetes版本查看

可以使用以下命令查看当前Kubernetes版本:

kubectl version

如下所示:

Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:58:59Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18+", GitVersion:"v1.18.3-gke.1", GitCommit:"8a6de33b365faaf5d8bff9a0ca6016d1ada78b76", GitTreeState:"clean", BuildDate:"2020-05-01T17:34:45Z", GoVersion:"go1.13.9b4", Compiler:"gc", Platform:"linux/amd64"}

六、Kubernetes的主要功能

Kubernetes有以下主要功能:

1、容器编排和调度

2、服务发现和负载均衡

3、存储编排和管理

4、自动扩展

5、自我修复

6、可插拔架构

7、安全性

七、Kubernetes原理

Kubernetes是一个容器编排和调度平台。它使用Pod作为最小的调度单位,底层集群有多个节点,每个节点可以容纳多个Pod。每个Pod中有一个或多个容器,这些容器所需的资源通过调度器分配。Kubernetes提供多种调度器,比如Priority和Fairness,根据不同的调度策略来分配资源。

Kubernetes的控制器负责管理Pod创建、更新和删除的过程,如Deployment、Replication Controller、StatefulSet等。Kubernetes的服务发现和负载均衡功能由Service提供,存储编排和管理由PVC(Persistent Volume Claim)和PV(Persistent Volume)等对象实现。Kubernetes可以自动扩展资源和缩减资源,如Horizontal Pod Autoscaler,可以自我修复,如Pod liveness和readiness探针,而且还具有可插拔的架构,可以方便地扩展自己的功能和定制化。

八、Kubernetes详解

Kubernetes是一个开源的容器编排和调度平台,最初由Google开发。它可以管理容器化的应用程序和服务,提供自动化部署、扩展、升级和下线应用程序。Kubernetes提供可插拔的架构,支持多种容器引擎,如Docker、rkt等。

Kubernetes通过API对象提供程序化接口,使得开发人员可以方便地构建和管理应用程序。Kubernetes支持水平扩展,可以扩展到数千个节点和上百万个Pod,同时提供高可用性。

九、Kubernetes教程

以下教程可以帮助您快速入门Kubernetes:

1、官方文档:https://kubernetes.io/docs/home/

2、Kubernetes in Action:

# 安装依赖
sudo apt-get install -y python2.7 python-pip

# 安装Kubernetes插件
pip install kubernetes==9.0.0

# 运行示例
python examples/chapter4/list_pods.py

3、Kubernetes视频教程:https://www.bilibili.com/video/BV1y7411y7wa?from=search&seid=7224380912326162517

4、Kubernetes实践指南:https://book.douban.com/subject/30239012/

十、Kubernetes安装选取

Kubernetes可以使用多种方式进行安装,以下是不同安装方式的适用场景:

1、二进制方式:适用于定制化的安装和高级用户

2、Kubeadm方式:适用于快速创建生产就绪的Kubernetes集群

3、Rancher方式:适用于使用Rancher管理Kubernetes集群的用户

4、云提供商方式:适用于云提供商托管基础设施的用户