kubernetes基础使用

时间:2023-03-09 13:31:15
kubernetes基础使用

查看节点详细信息

kubectl describe node vm2

显示版本号

kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:17:28Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:43:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

显示集群详细信息

kubectl cluster-info
Kubernetes master is running at https://192.168.1.181:6443
KubeDNS is running at https://192.168.1.181:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

创建服务

kubectl run nginx-1 --image=nginx:1.14-alpine --replicas=1
nginx-1 标签名label
--image 引用镜像名
--replicas 启动pod数量

查看pod信息

kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-1-dddf5b57b-5fx2q 1/1 Running 0 1m 10.244.2.2 vm3

删除镜像

[root@vm ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-1-dddf5b57b-5fx2q 1/1 Running 0 8m 10.244.2.2 vm3
[root@vm ~]# kubectl delete nginx-1-dddf5b57b-5fx2q
error: resource(s) were provided, but no name, label selector, or --all flag specified
[root@vm ~]# kubectl delete pods nginx-1-dddf5b57b-5fx2q
pod "nginx-1-dddf5b57b-5fx2q" deleted
[root@vm ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-1-dddf5b57b-vjgxb 1/1 Running 0 25s 10.244.1.2 vm2

deployment控制器指定需要有一个pod运行,删除后会自动创建一个

创建一个service

kubectl expose deployment nginx-1 --name=nginx-service --port=80 --target-port=80 --protocol=TCP
service/nginx-service exposed
[root@vm ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h
nginx-service ClusterIP 10.105.188.169 <none> 80/TCP 13s

deployment 控制器
nginx-1 控制器识别标签
name service名称
--port service暴露端口
--target-port 容器暴露端口

查看系统svc信息

kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 3h

查看创建的svc信息

kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h
nginx-service ClusterIP 10.105.188.169 <none> 80/TCP 29m

查看svc的详细信息

kubectl describe svc nginx-service
Name: nginx-service
Namespace: default
Labels: run=nginx-1
Annotations: <none>
Selector: run=nginx-1
Type: ClusterIP
IP: 10.105.188.169
Port: <unset> 80/TCP
TargetPort: 80/TCP
Endpoints: 10.244.1.2:80
Session Affinity: None
Events: <none>

升级镜像版本

kubectl set image deployment nginx-1 nginx-1=nginx

回滚镜像版本

kubectl rollout undo deployment nginx-1
deployment.extensions/nginx-1
[root@vm ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
client 0/1 Error 0 50m
nginx-1-d64bd498d-fw8kh 0/1 Terminating 0 5m
nginx-1-dddf5b57b-wzh2h 1/1 Running 0 8s

修改svc配置,使service可以外部访问

kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h
nginx-service ClusterIP 10.105.188.169 <none> 80/TCP 1h
[root@vm ~]# kubectl edit svc nginx-service
service/nginx-service edited
[root@vm ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h
nginx-service NodePort 10.105.188.169 <none> 80:30611/TCP 1h

kubectl edit svc nginx-service的内容spec:
clusterIP: 10.105.188.169
externalTrafficPolicy: Cluster
ports:
- nodePort: 30611
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx-1
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
将type改为NodePort,会将svc端口动态映射出去,上面映射为30611,用浏览器访问任意一个node都可以访问到

对pod添加标签

kubectl label pods pode-demo release=canary

修改pod标签

kubectl label pods pode-demo release=stable --overwrite
--overwrite

对标签进行过滤

kubectl get pods -l app --show-labels

显示有标签名的pod

kubectl get pods -L app,run

yaml文件创建一个pod

kubectl create -f xxxx.yaml

删除yaml文件创建的pod

kubectl delete -f xxxx.yaml

查看container日志

kubectl logs podename containername
正常容器比如nginx只有在被访问后才会出现日志
失败容器会直接产生错误日志

连接容器

kubectl exec -it podname -c containername bash