单机
先使用docker拉取nginx,看当前版本是否可拉取
docker pull nginx:1.23.2
创建nginx的yaml文件
cat > nginx.yaml << EOF
apiVersion: server/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2 # 两个副本
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.23.2
ports:
- containerPort: 80
EOF
kubectl apply -f nginx.yaml
# 编辑
# kubectl edit deployment nginx-deployment
此时使用kubectl get pods --all-namespaces -o wide
查看节点,发现nginx一直运行不起来,原因是由于kubernetes单机的控制面板(master)不允许创建容器的,会有污点,所以需要去污处理。
去污
查看节点具体信息 kubectl describe pod <节点NAME>
kubectl describe pod nginx-deployment-86956f97b8-nstrf
# 如果namespace非default 需要在命令后面加上 -n <NAMESPACE>
>>> default-scheduler 0/1 nodes are available: 1 node(s) had untolerated taint {
node-role. kubernetes. io/control-plane: }. preemption :0/1 nodes are available: 1 Preemption is not helpful for scheduling.
# 获取了一个节点,1个节点有污点,该节点没有用
查看当前软件的去污的命令参数
kubectl get no -o yaml | grep taint -A 10
>>> taints:
...
key: node-role.kubernetes.io/controal-plane # 去污节点参数
...
去污
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
# 1.24.0 版本需要使用下列命令去污
# kubectl taint nodes --all node-role.kubernetes.io/master-
负载均衡
由于创建了两个nginx副本,各自有各自的ip,且ip重启电脑或者重启kubernetesip会变,所以需要将两个副本绑定,实现负载均衡。
设置服务
kubectl expose deployment nginx-deployment --type=NodePort --name=nginx-service
查看pod,svc
kubectl get pod,svc -o wide
>>>
pod/nginx-deployment-86956f97b8-nstrf 1/1 Running 0 35m 192.168.235.197 k8s-master <none> <none>
pod/nginx-deployment-86956f97b8-vkznh 1/1 Running 0 35m 192.168.235.196 k8s-master <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d21h <none>
service/nginx-service NodePort 10.108.95.171 <none> 80:30530/TCP 2m24s app=nginx
在同一个kubernetes集群中可以使用curl 10.108.95.171
测试访问nginx,外部使用主机ip:30530
进行访问
集群
…
删除deployment的pod https://www.dianjilingqu.com/570508.html
删除pod
kubectl delete pods <pod_name> --grace-period=0 --force
未完待续。。。