ボーエンの概要:
リソースを作成し
、クライアントがサービスポッド内で実行されているK8Sアクセスすることはできません解決するために、2
第三に、ビルド民間倉庫、カスタムイメージと
、拡張の4つのバージョンの収縮能力
5つのアップグレードおよびロールバックサービスを
まず、リソースを作成します
このブログ記事は、コマンドラインを使用してリソースを作成する方法について説明します!
[root@master ~]# kubectl run test --image=nginx:latest --replicas=5
//基于httpd的镜像创建一个deployment类型的控制组,名称为test,并指定副本数量为5
[root@master ~]# kubectl get deployments. //查看deployment控制器
NAME READY UP-TO-DATE AVAILABLE AGE
test 5/5 5 5 6m26s
//可以看到deployment的name是我们指定的test
[root@master ~]# kubectl get replicasets. //查看replicasets这个控制器
NAME DESIRED CURRENT READY AGE
test-66cbf74d74 5 5 5 7m50s
//可以看到replicasets的NAME就是在deployment的NAME后面追加了一串ID号
[root@master ~]# kubectl get pod -o wide //查看pod的详细信息
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-66cbf74d74-5tcqz 1/1 Running 0 9m33s 10.244.1.7 node01 <none> <none>
test-66cbf74d74-6975b 1/1 Running 0 9m33s 10.244.2.3 node02 <none> <none>
test-66cbf74d74-d7wcg 1/1 Running 0 9m33s 10.244.1.6 node01 <none> <none>
test-66cbf74d74-d9lj6 1/1 Running 0 9m33s 10.244.1.5 node01 <none> <none>
test-66cbf74d74-r4fmp 1/1 Running 0 9m33s 10.244.2.2 node02 <none> <none>
//可以看到该pod的NAME就是在上面replicasets的后面又追加了一段ID
また、コントローラの詳細を表示するには、以下の方法を使用することができます!ここに方法は次のとおりです。
[root@master ~]# kubectl describe deployments. test
//查看名为test控制器的详细信息
図は、情報を返しました:
[root@master ~]# kubectl describe replicasets. test
//查看replicasets控制器的详细信息
図は、結果が返されました:
ポッドを作成するには、上記のプロセスから、我々は、リソースを作成するコマンドを実行すると、このコントローラの展開がさらにreplicaSetを介してコントローラを管理し、必要なポッドを作成することがわかります!
第二には、アドレスのクライアントにサービスK8S内部ポッドランニングにアクセスすることはできません
あなたが完了したクラスタポッドK8Sを作成すると、クラスタ内のポッドが提供するサービスにアクセスすることができ、次のように:
[root@master ~]# kubectl get pod -o wide //查看pod的详细信息
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-66cbf74d74-5tcqz 1/1 Running 0 28m 10.244.1.7 node01 <none> <none>
test-66cbf74d74-6975b 1/1 Running 0 28m 10.244.2.3 node02 <none> <none>
test-66cbf74d74-d7wcg 1/1 Running 0 28m 10.244.1.6 node01 <none> <none>
test-66cbf74d74-d9lj6 1/1 Running 0 28m 10.244.1.5 node01 <none> <none>
test-66cbf74d74-r4fmp 1/1 Running 0 28m 10.244.2.2 node02 <none> <none>
テスト・アクセス・内部クラスタ:
クラスタへのアクセスは問題ではありませんが、クラスタに加えて、この時間は、外部からのアクセスは非常に神経ラッキングされている、ではありません。幸いにもK8S次のようにプロセスがある達成するための完璧なソリューションを提供します。
[root@master ~]# kubectl run web --image=nginx:latest --port=80 --replicas=2
//创建一个名为web的deployment的资源对象,并映射容器的80端口到宿主机
[root@master ~]# kubectl expose deployment web --name=service --port=80 --type=NodePort
//创建一个service(名称可以自定义),将部署web资源对象的80端口映射出来
[root@master ~]# kubectl get svc service //查看创建service的信息
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service NodePort 10.110.139.176 <none> 80:31070/TCP 35s
//可以看出将部署的服务端口映射到了宿主机的31070端口
クライアントアクセステスト:
注:アクセス・グループは、クラスタ内の任意のノードに集中することであるが提供K8Sポッドサービスにアクセスすることができます!
第三に、ビルド民間倉庫、およびカスタム画像
ボーエンを参照することができ、民間倉庫を構築します。ドッカービルド民間倉庫(レジストリおよびハーバー)
ハーバーの倉庫または選択レジストリを簡単にするために、することができます。ここでは、次のように、民間倉庫のレジストリを構築するには:
[root@master ~]# docker run -tid --name registry -p 5000:5000 --restart always registry:latest
[root@master ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
//重启docker服务使配置文件生效,node01、node02的操作一致
[root@node01 ~]# scp root@master:/usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service
[root@node01 ~]# systemctl daemon-reload
[root@node01 ~]# systemctl restart docker
//node01的操作
[root@node02 ~]# scp root@master:/usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service
[root@node02 ~]# systemctl daemon-reload
[root@node02 ~]# systemctl restart docker
//node02的操作
##############搭建私有仓库完成##################
[root@master ~]# mkdir v{1,2,3}
[root@master ~]# cd v1
[root@master v1]# echo -e "FROM nginx:latest\nADD index.html /usr/share/nginx/html/" > Dockerfile
[root@master v1]# echo -e "<h1>hello lvzhenjiang:v1</h1>" > index.html
[root@master v1]# docker build -t 192.168.1.1:5000/nginx:version1 .
[root@master v1]# cp Dockerfile ../v2/
[root@master v1]# cp Dockerfile ../v3/
[root@master v1]# echo -e "<h1>hello lvzhenjiang:v2</h1>" > ../v2/index.html
[root@master v1]# echo -e "<h1>hello lvzhenjiang:v3</h1>" > ../v3/index.html
[root@master v1]# cd ../v2
[root@master v2]# docker build -t 192.168.1.1:5000/nginx:version2 .
[root@master v2]# cd ../v3
[root@master v3]# docker build -t 192.168.1.1:5000/nginx:version3 .
//生成三个不同版本的镜像,在主页上进行区分
[root@master v3]# docker push 192.168.1.1:5000/nginx:version1
[root@master v3]# docker push 192.168.1.1:5000/nginx:version2
[root@master v3]# docker push 192.168.1.1:5000/nginx:version3
//将镜像上传到私有仓库中
##################创建pod进行测试###################
[root@master v3]# kubectl run nginx --image=192.168.1.1:5000/nginx:version1 --port=80 --replicas=4
//基于自定义镜像(192.168.1.1:5000/nginx:v1)创建pod,副本数量为4个,并映射端口
[root@master v3]# kubectl get pod -o wide | grep nginx | awk '{print $6}'
10.244.2.11
10.244.2.10
10.244.1.16
10.244.1.15
//创建四个副本的IP地址
[root@master v3]# curl 10.244.2.11
<h1>hello lvzhenjiang:v1</h1>
[root@master v3]# curl 10.244.2.10
<h1>hello lvzhenjiang:v1</h1>
//访问副本的任意IP地址都可以看到同样的页面
第四に、拡張のバージョン、減容
最初の方法:
[root@master v3]# kubectl scale deployment nginx --replicas=8
//使用命令行的方式进行扩容操作(缩容也是一样的道理)
[root@master v3]# kubectl get pod -o wide | grep nginx | wc -l
8
[root@master v3]# kubectl get deployments. nginx -o yaml
[root@master v3]# kubectl get deployments. nginx -o json
//也可以将nginx资源类型已json或yaml文件格式输出(其中也可查看到副本的数量)
第二の方法:
[root@master v3]# kubectl edit deployments. nginx
//编辑名为nginx的资源类型
19 spec: //找到spec字段
20 progressDeadlineSeconds: 600
21 replicas: 6 //更改副本数量
//在保存退出的一瞬间就生效了
[root@master v3]# kubectl get pod -o wide | grep nginx | wc -l
6
//查看副本数量
第五に、アップグレードおよびロールバックサービス
サービスアップグレード:
[root@master v3]# kubectl set image deployment nginx nginx=192.168.1.1:5000/nginx:version2
//将nginx资源的镜像升级为192.168.1.1:5000/nginx:version2
[root@master v3]# kubectl get pod -o wide | grep nginx | awk '{print $6}'
10.244.1.19
10.244.1.21
10.244.1.20
10.244.2.14
10.244.2.15
10.244.2.16
[root@master v3]# curl 10.244.1.19
<h1>hello lvzhenjiang:v2</h1>
//可以通过测试访问的方式进行验证
[root@master v3]# kubectl get deployments. nginx -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 6/6 6 6 18m nginx 192.168.1.1:5000/nginx:version2 run=nginx
//可以通过查看nginx资源的信息进行查看
[root@master v3]# kubectl describe deployments. nginx
//也可以通过查看nginx资源的详细信息进行查看
次のようにクエリ結果は以下のとおりです。
[root@master v3]# kubectl set image deployment nginx nginx=192.168.1.1:5000/nginx:version3
//再次升级
[root@master v3]# kubectl get deployments. nginx -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 6/6 6 6 20m nginx 192.168.1.1:5000/nginx:version3 run=nginx
//根据显示信息可以看出已经升级成功
サービスがロールバック:
[root@master v3]# kubectl rollout undo deployment nginx
//对nginx资源进行回滚操作
[root@master v3]# kubectl get deployments. nginx -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 6/6 4 6 22m nginx 192.168.1.1:5000/nginx:version2 run=nginx
//从查询结果中可以查看已经回滚到上一个版本
[root@master v3]# kubectl rollout undo deployment nginx
[root@master v3]# kubectl get deployments. nginx -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 5/6 6 5 53m nginx 192.168.1.1:5000/nginx:version3 run=nginx
//再次执行回滚操作,发现又回到版本3
これは、ほぼ一貫アップグレードK8Sバージョンのクラスタ、ロールバックとドッキングウィンドウの群れを見ることができます!
しかし、将来のブログ記事で、指定されたバージョンにロールバックすることができますK8Sでロールバック操作はに導入されます!
この記事--------これまでのところ、読んでくれてありがとう--------