【K8S实战】-超详细教程(一)

1、环境准备

K8S环境搭建可以看这篇文章【k8s搭建(超详细,保姆级教程)】,这里就不过多赘述了,有疑问欢迎留言。

2、K8S资源创建

K8S的资源创建一般有2种:

  • 使用命令创建
  • 使用Yaml文件创建
    详情请参考K8S官方文档。

3、Namespace(命名空间)

主要用于资源访问的隔离。

3.1、命令操作Namespace

使用命令方式实现对命名空的创建与删除。

查看当前k8s的所有命名空间
[root@k8s-m ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   4d
kube-node-lease   Active   4d
kube-public       Active   4d
kube-system       Active   4d创建命名空间,namespace可使用缩写的ns代替
[root@k8s-m ~]# kubectl create namespace test-ns
namespace/test-ns created
[root@k8s-m ~]# 再次查看我们创建的命名空间,发现我们已经成功创建test-ns
[root@k8s-m ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   4d
kube-node-lease   Active   4d
kube-public       Active   4d
kube-system       Active   4d
test-ns           Active   95s
[root@k8s-m ~]# 删除命名空间
[root@k8s-m ~]# kubectl delete ns test-ns
namespace "test-ns" deleted
[root@k8s-m ~]# 再次查看发现命名空间已被删除
[root@k8s-m ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   4d
kube-node-lease   Active   4d
kube-public       Active   4d
kube-system       Active   4d
[root@k8s-m ~]#

3.2、使用Yaml操作Namespace

创建一个名为ns.yaml的文件,文件内容如下:

apiVersion: v1
kind: Namespace
metadata:name: test-ns

使用Yaml方式对命名空进行创建与删除。

创建操作kubectl apply -f xxx.yaml意思是使用xxx.yaml文件创建资源,
可以使用kubectl --help查看一级说明,kubectl apply --help二级说明
[root@k8s-m ns]# kubectl apply -f ns.yaml #意思使用ns.yaml创建资源
namespace/test-ns created
[root@k8s-m ns]# 删除操作
[root@k8s-m ns]# kubectl delete -f ns.yaml
namespace "test-ns" deleted
[root@k8s-m ns]#

4、pod

pod是K8S运行的最小单位。可以理解类似Docker的最小运行单位容器,只不过K8S是在Docker容器的基础上再封装一层,也就是说一个pod可以运行一个或多个容器(后面我会实验)。

4.1、命令操作pod

接下来实践下命令对pod进行操作,这里我们使用nginx进行实践。

查看当前运行的pod
[root@k8s-m ns]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
kube-system   calico-kube-controllers-6d9cdcd744-4vb6b   1/1     Running   1          4d      192.168.29.6     k8s-m    <none>           <none>
kube-system   calico-node-rpbwg                          1/1     Running   1          4d      200.168.88.130   k8s-m    <none>           <none>
kube-system   calico-node-t96v2                          1/1     Running   1          4d      200.168.88.132   k8s-n1   <none>           <none>
kube-system   coredns-5897cd56c4-55v75                   1/1     Running   1          4d      192.168.29.4     k8s-m    <none>           <none>
kube-system   coredns-5897cd56c4-tf8cb                   1/1     Running   1          4d      192.168.29.5     k8s-m    <none>           <none>
kube-system   etcd-k8s-m                                 1/1     Running   1          4d      200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-apiserver-k8s-m                       1/1     Running   1          4d      200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-controller-manager-k8s-m              1/1     Running   2          4d      200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-proxy-96bsb                           1/1     Running   0          6h45m   200.168.88.132   k8s-n1   <none>           <none>
kube-system   kube-proxy-wxkmr                           1/1     Running   0          6h44m   200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d      200.168.88.130   k8s-m    <none>           <none>
[root@k8s-m ns]# 创建一个名为nginx的pod
[root@k8s-m ns]# kubectl run nginx --image=nginx
pod/nginx created
[root@k8s-m ns]#
再次查看发现nginx已经启动成功
[root@k8s-m ns]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx                                      1/1     Running   0          28s     192.168.215.72   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d      200.168.88.130   k8s-m    <none>           <none>[root@k8s-m ns]#
k8s说成功,但我们还是验证下是否是真的成功,结果发现是成功了。
[root@k8s-m ns]# curl 192.168.215.72
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@k8s-m ns]# 删除nginx pod,注:-n是指定namespace,这里是默认可以省略-n default
[root@k8s-m pod]# kubectl delete pod nginx -n default
pod "nginx" deleted
[root@k8s-m pod]# 

4.2、Yaml操作pod

接下来实践下使用Yaml对pod进行操作。

运行一个nginx的pod
[root@k8s-m pod]# kubectl apply -f pod.yaml
pod/nginx created
查看nginx是否创建成功
[root@k8s-m pod]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-test                                      1/1     Running   0          86s    192.168.215.73   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d1h   200.168.88.130   k8s-m    <none>           <none>
验证nginx
[root@k8s-m pod]# curl 192.168.215.73
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@k8s-m pod]#
删除
[root@k8s-m pod]# kubectl delete -f pod.yaml
pod "nginx" deleted
[root@k8s-m pod]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
kube-system   calico-kube-controllers-6d9cdcd744-4vb6b   1/1     Running   1          4d1h    192.168.29.6     k8s-m    <none>           <none>
kube-system   calico-node-rpbwg                          1/1     Running   1          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   calico-node-t96v2                          1/1     Running   1          4d1h    200.168.88.132   k8s-n1   <none>           <none>
kube-system   coredns-5897cd56c4-55v75                   1/1     Running   1          4d1h    192.168.29.4     k8s-m    <none>           <none>
kube-system   coredns-5897cd56c4-tf8cb                   1/1     Running   1          4d1h    192.168.29.5     k8s-m    <none>           <none>
kube-system   etcd-k8s-m                                 1/1     Running   1          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-apiserver-k8s-m                       1/1     Running   1          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-controller-manager-k8s-m              1/1     Running   2          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-proxy-96bsb                           1/1     Running   0          7h13m   200.168.88.132   k8s-n1   <none>           <none>
kube-system   kube-proxy-wxkmr                           1/1     Running   0          7h13m   200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d1h    200.168.88.130   k8s-m    <none>           <none>

pod.yaml文件内容如下:

apiVersion: v1
kind: Pod #指定创建的资源为Pod
metadata: #元数据描述labels:run: nginx-testname: nginx-test #pod的名称
spec:containers:- image: nginx #指定镜像,这里没指定版本所以拿最新版本name: nginx restartPolicy: Always #失败重启策略

4.3、pod运行多个容器

创建
[root@k8s-m pod]# kubectl apply -f mpod.yaml
pod/test-pod created
查看,发现2/2,说明一个pod是可以运行多个容器的
[root@k8s-m pod]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
default       test-pod                                   2/2     Running   0          63s     192.168.215.74   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d1h    200.168.88.130   k8s-m    <none>           <none>验证nginx
[root@k8s-m pod]# curl 192.168.215.74
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>验证redis,发现是ok的。
[root@k8s-m pod]# kubectl exec -it test-pod -c redis -- redis-cli
127.0.0.1:6379> 删除
[root@k8s-m pod]# kubectl delete -f mpod.yaml
pod "test-pod" deleted
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
kube-system   calico-kube-controllers-6d9cdcd744-4vb6b   1/1     Running   1          4d1h    192.168.29.6     k8s-m    <none>           <none>
kube-system   calico-node-rpbwg                          1/1     Running   1          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   calico-node-t96v2                          1/1     Running   1          4d1h    200.168.88.132   k8s-n1   <none>           <none>
kube-system   coredns-5897cd56c4-55v75                   1/1     Running   1          4d1h    192.168.29.4     k8s-m    <none>           <none>
kube-system   coredns-5897cd56c4-tf8cb                   1/1     Running   1          4d1h    192.168.29.5     k8s-m    <none>           <none>
kube-system   etcd-k8s-m                                 1/1     Running   1          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-apiserver-k8s-m                       1/1     Running   1          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-controller-manager-k8s-m              1/1     Running   2          4d1h    200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-proxy-96bsb                           1/1     Running   0          7h33m   200.168.88.132   k8s-n1   <none>           <none>
kube-system   kube-proxy-wxkmr                           1/1     Running   0          7h32m   200.168.88.130   k8s-m    <none>           <none>
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d1h    200.168.88.130   k8s-m    <none>           <none>

mpod.yaml文件内容如下:

apiVersion: v1
kind: Pod #指定创建的资源为Pod
metadata: #元数据描述labels:run: test-podname: test-pod #pod的名称
spec:containers: #这里是复数说明可以放多个镜像- image: nginx #指定镜像,这里没指定版本所以拿最新版本name: nginx- image: redisname: redis restartPolicy: Always #失败重启策略

**思考:**一个pod能否运行2个端口相同的nginx容器?答案是不行的,实践如下:

mpod.yaml文件2个镜像都更改为nginx
[root@k8s-m pod]# kubectl apply -f mpod.yaml
pod/test-pod created
查看,发现报error了
[root@k8s-m pod]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
default       test-pod                                   1/2     Error     0          18s     192.168.215.75   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d1h    200.168.88.130   k8s-m    <none>           <none>查看日志,发现报端口冲突了。由此得出一个结论,一个pod不能运行多个端口一样的容器
[root@k8s-m pod]# kubectl logs test-pod -c redis -n default
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/06/22 22:44:21 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)

**注:**在一个pod存在多个容器时,想要进入对应的容器,需要使用“-c 容器名称(就是下面的name对应的值)”才能进入到对应容器,不加“-c”会默认进入第一个容器。

containers: #这里是复数说明可以放多个镜像- image: nginx #指定镜像,这里没指定版本所以拿最新版本name: nginx- image: redisname: redis

5、Deployment

Deployment具备多副本、扩缩容、故障转移/自愈、滚动更新以及版本回退能力。

5.1、多副本

5.1.1、命令操作

创建一个名为nginx-tmp的deployment。副本数量为2
[root@k8s-m ~]# kubectl create deployment nginx-tmp --image=nginx --replicas=2
deployment.apps/nginx-tmp created查看发现在k8s-n1节点已经部署了2个pod
[root@k8s-m ~]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-596bb86f48-q6d4z                 1/1     Running   0          16s    192.168.215.77   k8s-n1   <none>           <none>
default       nginx-tmp-596bb86f48-xklkd                 1/1     Running   0          16s    192.168.215.78   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d4h   200.168.88.130   k8s-m    <none>           <none>
[root@k8s-m ~]#
删除deployment操作
[root@k8s-m ~]# kubectl delete deployment nginx-tmp
deployment.apps "nginx-tmp" deleted

5.1.2、Yaml操作

[root@k8s-m dpm]# kubectl apply -f nginx-tmp.yaml
deployment.apps/nginx-tmp created查看创建的deploy,发现已启动2个pod
[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-fhdt5                  1/1     Running   0          17s    192.168.215.81   k8s-n1   <none>           <none>
default       nginx-tmp-f4bb75fc8-vvv6l                  1/1     Running   0          17s    192.168.215.82   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d4h   200.168.88.130   k8s-m    <none>           <none>删除操作
[root@k8s-m dpm]# kubectl delete -f nginx-tmp.yaml
deployment.apps "nginx-tmp" deleted

nginx-tmp.yaml文件内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-tmpname: nginx-tmp
spec:replicas: 2 #副本数量selector:matchLabels:app: nginx-tmptemplate:metadata:labels:app: nginx-tmpspec:containers:- image: nginximagePullPolicy: IfNotPresentname: nginxrestartPolicy: Always

5.2、扩缩容

5.2.1、命令方式操作

我们这里以【5.1、多副本】的样例进行相关操作。

查看所有正在运行的pod
[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-596bb86f48-fmhcv                 1/1     Running   0          12s     192.168.215.86   k8s-n1   <none>           <none>
default       nginx-tmp-596bb86f48-lkr85                 1/1     Running   0          12s     192.168.215.87   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h    200.168.88.130   k8s-m    <none>           <none>扩容,这里把副本增加至3个
[root@k8s-m dpm]# kubectl scale deployment nginx-tmp --replicas=3
deployment.apps/nginx-tmp scaled发现副本已经扩容至3个了
[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-596bb86f48-fmhcv                 1/1     Running   0          12s     192.168.215.86   k8s-n1   <none>           <none>
default       nginx-tmp-596bb86f48-lkr85                 1/1     Running   0          12s     192.168.215.87   k8s-n1   <none>           <none>
default       nginx-tmp-596bb86f48-s266q                 1/1     Running   0          5m10s   192.168.215.83   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h    200.168.88.130   k8s-m    <none>           <none>缩容,这里把副本减少至1个
[root@k8s-m dpm]# kubectl scale deployment nginx-tmp --replicas=1
deployment.apps/nginx-tmp scaled发现只剩下1个副本在运行了
[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS        RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-596bb86f48-lkr85                 1/1     Running   0          12s     192.168.215.87   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running       3          4d5h    200.168.88.130   k8s-m    <none>           <none>

5.2.2、Yaml方式操作

这里的yaml文件以【5.1.2】内容为准

初始运行状态
[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-b87nj                  1/1     Running   0          3s     192.168.215.89   k8s-n1   <none>           <none>
default       nginx-tmp-f4bb75fc8-w8psm                  1/1     Running   0          3s     192.168.215.88   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h   200.168.88.130   k8s-m    <none>           <none>扩容至3个,修改yaml文件的replicas的值为3即可
[root@k8s-m dpm]# kubectl apply -f nginx-tmp.yaml
deployment.apps/nginx-tmp configured发现已经扩容至了3个副本
[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-95qxg                  1/1     Running   0          12s    192.168.215.90   k8s-n1   <none>           <none>
default       nginx-tmp-f4bb75fc8-b87nj                  1/1     Running   0          114s   192.168.215.89   k8s-n1   <none>           <none>
default       nginx-tmp-f4bb75fc8-w8psm                  1/1     Running   0          114s   192.168.215.88   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h   200.168.88.130   k8s-m    <none>           <none>缩容副本数至1个,修改yaml文件的replicas的值为1即可
[root@k8s-m dpm]# kubectl apply -f nginx-tmp.yaml
deployment.apps/nginx-tmp configured
[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-95qxg                  1/1     Running   0          12s    192.168.215.90   k8s-n1   <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h   200.168.88.130   k8s-m    <none>           <none>

5.3、故障转移、自愈

5.3.1、故障转移

这里需要再加入一台机器才能直观的看到实验效果,我这里加入一台node2(200.168.88.131),怎么加入的我这里就不赘述了【k8s搭建(超详细,保姆级教程)】
加入后,在master查看K8S的所有运行信息

查看当前所有运行的信息
[root@k8s-m dpm]#  kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
kube-system   calico-kube-controllers-6d9cdcd744-4vb6b   1/1     Running   1          4d5h   192.168.29.6     k8s-m    <none>           <none>
kube-system   calico-node-42k9b                          1/1     Running   0          91s    200.168.88.132   k8s-n1   <none>           <none>
kube-system   calico-node-rpbwg                          1/1     Running   1          4d5h   200.168.88.130   k8s-m    <none>           <none>
kube-system   calico-node-tm2kk                          1/1     Running   0          27s    200.168.88.131   k8s-n2   <none>           <none>
.....
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h   200.168.88.130   k8s-m    <none>           <none>

这里以【5.1.2】的nginx-tmp.yaml进行演示。如下,目前nginx-tmp-f4bb75fc8-gd4w8是运行在节点1(node1),现模拟节点1宕机后nginx-tmp-xxx会不会在节点2启动。

[root@k8s-m dpm]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS        RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-gd4w8                  1/1     Running       0          6s      192.168.215.67   k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running       3          4d5h    200.168.88.130   k8s-m    <none>           <none>执行节点1宕机操作(poweroff-关机)
[root@k8s-n1 ~]# poweroff
Connection closed by foreign host.
Disconnected from remote host(k8s-node1) at 17:17:48.要等一段时间,发现node1的nginx-tmp-xx已经开始停掉了,K8S已经在node2上重新创建了一个新的nginx-tmp-xx。
[root@k8s-m ~]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS        RESTARTS   AGE    IP                NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-f2ltm                  1/1     Running       0          19s    192.168.111.196   k8s-n2   <none>           <none>
default       nginx-tmp-f4bb75fc8-gd4w8                  1/1     Terminating   0          10m    192.168.215.67    k8s-n1   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running       3          4d6h   200.168.88.130    k8s-m    <none>           <none>稍后重启node1节点,K8S过段时间会把nginx-tmp-f4bb75fc8-gd4w8已经停掉的pod移除。
[root@k8s-m ~]# kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE    IP                NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-f2ltm                  1/1     Running   0          10m    192.168.111.196   k8s-n2   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running       3          4d6h   200.168.88.130    k8s-m    <none>           <none>

5.3.2、自愈能力

这里以【5.1.2】的nginx-tmp.yaml进行演示。

[root@k8s-m dpm]#  kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-bxpgz                  1/1     Running   0          2s      192.168.111.193   k8s-n2   <none>           <none>
kube-system   calico-kube-controllers-6d9cdcd744-4vb6b   1/1     Running   1          4d5h    192.168.29.6      k8s-m    <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h    200.168.88.130    k8s-m    <none>           <none>使用命令删除掉这个nginx-tmp-f4bb75fc8-bxpgz,发现K8S会重新起一个新的nginx-tmp-xxx,这个就是delpoyment的自愈能力
[root@k8s-m dpm]#  kubectl get pod -A -owide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE     NOMINATED NODE   READINESS GATES
default       nginx-tmp-f4bb75fc8-bxpgz                  0/1     Terminating   0          23s     192.168.215.66    k8s-n2   <none>           <none>
default       nginx-tmp-f4bb75fc8-r6bsg                  1/1     Running   0          21s     192.168.111.195   k8s-n2   <none>           <none>
......
kube-system   kube-scheduler-k8s-m                       1/1     Running   3          4d5h    200.168.88.130    k8s-m    <none>           <none>

环境搭建篇:k8s搭建(超详细,保姆级教程)
下一篇:【K8S实战】-超详细教程(二)。

资料文献:

  • K8S官网

【K8S实战】-超详细教程(一)相关推荐

  1. 【K8S实战】-超详细教程(二)

    [K8S实战]-超详细教程(二) 环境这块的这里我就不过多描述了,需要了解的可以看这篇文章[k8s搭建(超详细,保姆级教程)]. 1.Deployment Deployment其他功能我上一篇文章已写 ...

  2. 【K8S实战】-超详细教程(三)

    [K8S实战]-超详细教程(三) 1.存储 1.1.nfs默认存储 我这里只演示nfs作为K8S的默认存储,其他的可以看这里[存储类]. 1.1.1.安装nfs服务 所有机器都安装nfs工具 所有机器 ...

  3. 手把手从零开始搭建k8s集群超详细教程

    本教程根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps同步所做笔记教程 k8s集群搭建超详细教程 1. 基本环境搭建 1. 创建私有网络 2. 创建服务 ...

  4. 微服务Springcloud超详细教程+实战(二)

    微服务Springcloud超详细教程+实战(二) -------------------------------------- 远程调用方式 无论是微服务还是分布式服务(都是SOA,都是面向服务编程 ...

  5. 二进制安装部署 4 kubernetes集群---超详细教程

    二进制安装部署kubernetes集群---超详细教程 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以 ...

  6. 手把手带你入门前端工程化——超详细教程(高级前端必备)

    本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能优化 重构 部分小节提供了非常详细的实战教程,让大家动手实践. 另外我还写了一个前端工程化 demo 放在 github 上.这 ...

  7. 手把手带你入门前端工程化——超详细教程

    授权自@谭光志 链接:https://segmentfault.com/a/1190000037752931,也可点击阅读原文 本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能 ...

  8. 安装64位Oracle 10g超详细教程

    安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连 ...

  9. mysql超详细教程_MySQL8.0.23安装超详细教程

    前言 最近在做一个人脸识别的项目,需要用数据库保存学生信息与前段交互. MySQL的优点 1.mysql性能卓越,服务稳定,很少出现异常宕机. 2.mysql开放源代码且无版权制约,自主性及使用成本低 ...

最新文章

  1. 你可能不知道的Shell
  2. Maven学习总结(二)——Maven项目构建过程练习
  3. Redis进阶-Redis键值设计及BigKey问题
  4. Java常用API (四) 包装类
  5. oracle 物理读突然增加的原因_请教一个诡异的物理读比逻辑读还多的问题!!!!
  6. Cannot find or open the PDB file
  7. 飞鸽传书技术更新换代非常快
  8. [机器学习]TF-IDF是什么
  9. 【Java】Java多线程神器:join使用及原理
  10. 爬取表格类网站数据并保存为excel文件
  11. bzoj 4127: Abs(树链剖分+线段树)
  12. [macOS] git忽略所有的.DS_Store文件
  13. pl/sql 连接远程数据库
  14. 半导体物理学习记录——概述
  15. 蚁群算法原理及Matlab实现
  16. 14.linux中的无人职守安装脚本kickstart
  17. webgl漫反射公式物理原理猜测
  18. 求一个数的算术平方根
  19. 深度解析国内O2O模式
  20. W10电脑U盘插入电脑不显示盘符但是“安全删除硬件并弹出媒体”中却有该U盘

热门文章

  1. 概念理解:希尔伯特空间、内积、共轭
  2. 跨端物料解决方案-织网
  3. H5移动端 高德地图 巡查轨迹回放 2.0版
  4. ArrayAdapter和SimpleAdapter、BaseAdapter
  5. java arrayadapter_Android之ArrayAdapter详解
  6. MySQL学习(1)-当前读和快照读
  7. 总线带宽计算公式(解析)
  8. 计算机科学家蒂姆,“万维网之父”蒂姆·伯纳斯·李的科学家精神
  9. 2022最炫酷的圣诞树合集(附动态效果展示和网盘源码)
  10. 突发!LayUI官网宣布下线了