【K8S实战】-超详细教程(一)
【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实战】-超详细教程(一)相关推荐
- 【K8S实战】-超详细教程(二)
[K8S实战]-超详细教程(二) 环境这块的这里我就不过多描述了,需要了解的可以看这篇文章[k8s搭建(超详细,保姆级教程)]. 1.Deployment Deployment其他功能我上一篇文章已写 ...
- 【K8S实战】-超详细教程(三)
[K8S实战]-超详细教程(三) 1.存储 1.1.nfs默认存储 我这里只演示nfs作为K8S的默认存储,其他的可以看这里[存储类]. 1.1.1.安装nfs服务 所有机器都安装nfs工具 所有机器 ...
- 手把手从零开始搭建k8s集群超详细教程
本教程根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps同步所做笔记教程 k8s集群搭建超详细教程 1. 基本环境搭建 1. 创建私有网络 2. 创建服务 ...
- 微服务Springcloud超详细教程+实战(二)
微服务Springcloud超详细教程+实战(二) -------------------------------------- 远程调用方式 无论是微服务还是分布式服务(都是SOA,都是面向服务编程 ...
- 二进制安装部署 4 kubernetes集群---超详细教程
二进制安装部署kubernetes集群---超详细教程 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以 ...
- 手把手带你入门前端工程化——超详细教程(高级前端必备)
本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能优化 重构 部分小节提供了非常详细的实战教程,让大家动手实践. 另外我还写了一个前端工程化 demo 放在 github 上.这 ...
- 手把手带你入门前端工程化——超详细教程
授权自@谭光志 链接:https://segmentfault.com/a/1190000037752931,也可点击阅读原文 本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能 ...
- 安装64位Oracle 10g超详细教程
安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连 ...
- mysql超详细教程_MySQL8.0.23安装超详细教程
前言 最近在做一个人脸识别的项目,需要用数据库保存学生信息与前段交互. MySQL的优点 1.mysql性能卓越,服务稳定,很少出现异常宕机. 2.mysql开放源代码且无版权制约,自主性及使用成本低 ...
最新文章
- 你可能不知道的Shell
- Maven学习总结(二)——Maven项目构建过程练习
- Redis进阶-Redis键值设计及BigKey问题
- Java常用API (四) 包装类
- oracle 物理读突然增加的原因_请教一个诡异的物理读比逻辑读还多的问题!!!!
- Cannot find or open the PDB file
- 飞鸽传书技术更新换代非常快
- [机器学习]TF-IDF是什么
- 【Java】Java多线程神器:join使用及原理
- 爬取表格类网站数据并保存为excel文件
- bzoj 4127: Abs(树链剖分+线段树)
- [macOS] git忽略所有的.DS_Store文件
- pl/sql 连接远程数据库
- 半导体物理学习记录——概述
- 蚁群算法原理及Matlab实现
- 14.linux中的无人职守安装脚本kickstart
- webgl漫反射公式物理原理猜测
- 求一个数的算术平方根
- 深度解析国内O2O模式
- W10电脑U盘插入电脑不显示盘符但是“安全删除硬件并弹出媒体”中却有该U盘
热门文章
- 概念理解:希尔伯特空间、内积、共轭
- 跨端物料解决方案-织网
- H5移动端 高德地图 巡查轨迹回放 2.0版
- ArrayAdapter和SimpleAdapter、BaseAdapter
- java arrayadapter_Android之ArrayAdapter详解
- MySQL学习(1)-当前读和快照读
- 总线带宽计算公式(解析)
- 计算机科学家蒂姆,“万维网之父”蒂姆·伯纳斯·李的科学家精神
- 2022最炫酷的圣诞树合集(附动态效果展示和网盘源码)
- 突发!LayUI官网宣布下线了