source <(kubectl completion bash) 命令补全
如不能补全先安装apt-get install bash-completion包
查SN
wmic bios get serialnumber
SerialNumber
ssh candidate@11.0.1.112
问:The connection to the server 11.0.1.111:6443 was refused - did you specify the right host or port?
1.检查环境变量情况(正常)
# env | grep -i kub
2.检查docker服务(正常)
# systemctl status docker.service
3.检查kubelet服务(表面正常)
# systemctl status kubelet.service
4.查看端口是是否被监听(没有监听)
# netstat -pnlt | grep 6443
5.检查防火墙状态(正常)
# systemctl status firewalld.service
6.查看日志
# journalctl -xeu kubelet
6.1 重新导入一下API镜像即可。
# docker load -i kube-apiserver-amd64_v1.9.0.tar
6.2 重启docker和kubelet服务
# systemctl restart docker.service
# systemctl restart kubelet.service
一、RBAC基于角色的访问控制(Role-Based Access Control)。
kubectl create clusterrole -h
创建集群角色
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets
创建集群角色 部署角色 动作=创建,资源= 部署(deployments)、有状态副本集(statefulsets)、守护进程集(daemonsets)
kubectl -n app-team1 create serviceaccount cicd-token
创建命名空间为app-team1的服务账户,将CICD令牌绑定
kubectl -n app-team1 create rolebinding cicd-token-rolebinding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
创建名为cicd-token-rolebinding(角色绑定),并将deployment-clusterrole集群角色授权给名为app-team1:cicd-token的服务账户。在Kubernetes中,角色绑定用于将角色授权绑定到指定的用户或服务账户上,从而实现对资源的授权管理。指定了命名空间为app-team1,并创建了名为cicd-token-rolebinding的角色绑定,将deployment-clusterrole集群角色授权给名为app-team1:cicd-token的服务账户。可以授权app-team1:cicd-token服务账户对部署资源进行操作
kubectl -n app-team1 describe rolebinding cicd-token-rolebinding 检查cicd口令角色绑定的信息
二、查看pod cpu
kubectl top pod -h
Options:
-A, --all-namespaces=false:
If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even
if specified with --namespace.
--containers=false:
If present, print usage of containers within a pod.
--field-selector='':
Selector (field query) to filter on, supports '=', '==', and '!='.(e.g. --field-selector
key1=value1,key2=value2). The server only supports a limited number of field queries per type.
--no-headers=false:
If present, print output without headers.
-l, --selector='':
Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching
objects must satisfy all of the specified label constraints.
--sort-by='':
If non-empty, sort pods list using specified field. The field can be either 'cpu' or 'memory'.
--sum=false:
Print the sum of the resource usage
--use-protocol-buffers=true:
Enables using protocol-buffers to access Metrics API.
word count: 143, token count: 396
Options的翻译是命令选项。在Kubernetes中,命令选项用于为kubectl命令指定不同的参数和标志,以实现不同的功能。上述命令中列出了kubectl top pod命令的各个选项,包括:
-A, --all-namespaces:如果指定,则在所有命名空间中列出所请求的对象。忽略当前上下文中的命名空间,即使使用--namespace指定也是如此。
--containers:如果指定,则打印容器在Pod内的使用情况。
--field-selector:过滤Pod使用的字段选择器,支持'='、'=='和'!='。例如:--field-selector key1=value1,key2=value2。服务器仅支持每种类型的有限数量的字段查询。
--no-headers:如果指定,则打印输出时不包含标题。
-l, --selector:选择器(标签查询)用于过滤,支持'='、'=='和'!='。例如:-l key1=value1,key2=value2。匹配的对象必须满足所有指定的标签约束条件。
--sort-by:如果非空,则使用指定的字段对Pod列表进行排序。该字段可以是'cpu'或'memory'。
--sum:打印资源使用情况的总和。
--use-protocol-buffers:启用使用协议缓冲区访问Metrics API。
word count: 289, token count: 760, tokens used: 4309, model: gpt-3.5-turbo
答题:
kubectl top pod -l name=cpu-loader --sort-by=cpu -A
查看CPU名称为cpu-loader--排序=CPU -A所有命名空间
echo "redis-test">/opt/KUTR000401/KUTR00401.txt
将pod名称写入指定文件
cat /opt/KUTR000401/KUTR00401.txt
查看文件内容
三、配置网络策略networkpolicy
查看所有 ns 的标签 label
kubectl get ns --show-labels
如果访问者的 namespace 没有标签 label,则需要手动打一个。如果有一个独特的标签 label,则也可以直接使用。
kubectl label ns echo project=echo
vim networkpolicy.yaml 创建VIM编辑网络策略yaml文件
kubectl apply -f networkpolicy.yaml 应用网络策略yaml文件
kubectl describe networkpolicy -n my-app 检查my-app网络策略文件
cat networkpolicy.yaml 查看yaml文件
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-part-from-namespace
namespace: my-app
spec:
podSelector:
matchLabels: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
project: echo
ports:
- protocol: TCP
port: 9200
四、暴露服务service
kubectl get deploy front-end
检查deployment信息
kubectl edit deployment front-end
kubectl expose deployment front-end --type=NodePort --port=80 --target-port=80 --name=front-end-svc
将名为“front-end”的Deployment暴露成一个Service,并将其类型设置为NodePort。该Service将监听集群中所有节点的指定端口,并将流量转发到该Deployment中所有Pod的80端口。这个命令还指定了Service的名称为“front-end-svc”。
kubectl get svc front-end-svc -o wide
检查端口服务及名称
kubectl get deployment front-end -o wide
检查部署前端类型及名称
五、创建Ingress
vim ingress.yaml 创建ingress.yaml文件
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ping
namespace: ing-internal
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /hello
pathType: Prefix
backend:
service:
name: hello
port:
number: 5678
cat ingress.yaml 查看ingress.yaml文件
kubectl apply -f ingress.yaml
应用yaml文件
kubectl get ingress -n ing-internal
查看获取IP
curl 10.108.39.2/hello
测试IP连通性