目录
💟这里是CS大白话专场,让枯燥的学习变得有趣!
💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!
💟好记性不如烂键盘,自己总结不如收藏别人!
🧡 ETCD快照
针对运行在https://127.0.0.1:2379上的etcd数据库创建一个快照,保存到/srv/data/etcd-snapshot.db文件中。执行etcdctl命令的证书存放在:
CA证书:/opt/KUIN00601/ca.crt
客户端证书:/opt/KUIN00601/etcd-client.crt
客户端密钥:/opt/KUIN00601/etcd-client.key
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379\
--cacert=/opt/KUIN00601/ca.crt\
--cert=/opt/KUIN00601/etcd-client.crt\
--key=/opt/KUIN00601/etcd-client.key\
snapshot save /srv/data/etcd-snapshot.db
然后恢复快照/var/lib/backup/etcd-snapshot-previous.db。
cd /etc/kubernetes/manifests
mv * ..
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379\
--cacert=/opt/KUIN00601/ca.crt\
--cert=/opt/KUIN00601/etcd-client.crt\
--key=/opt/KUIN00601/etcd-client.key\
--data-dir=/var/lib/etcd-pre
snapshot restore /var/lib/backup/etcd-snapshot-previous.db
vim /etc/kubernetes/etcd.yaml
//修改
path: /var/lib/etcd-pre
cd /manifests
mv ../*.yaml .
watch crictl ps
🧡 网络策略
🍠创建一个名字为all-port-from-namespace的NetworkPolicy,允许命名空间internal下的Pods访问该命名空间下其他Pods的9000端口。保证NetworkPolicy:
不允许访问没有监听9000端口的Pods。
不允许不在internal命名空间内的Pods访问。
vim np.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: all-port-from-namespace
namespace: internal
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- podSelector: {}
ports:
- port: 80
protocol: TCP
🍠在现有命名空间my-app下创建一个名字为all-port-from-namespace的NetworkPolicy,允许命名空间echo下的Pods访问my-app下其他Pods的9000端口。保证NetworkPolicy:
不允许访问没有监听9000端口的Pods。
不允许不在echo命名空间内的Pods访问。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: all-port-from-namespace
namespace: my-app
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
project: echo
ports:
- port: 80
protocol: TCP
kubectl apply -f np.yaml
🧡 Service
重新配置一个已经存在的名为front-end的deployment,在名为nginx的容器里添加一个名为http的端口配置,暴露端口号为80/tcp。
kubectl edit deployment front-end
spec:
containers:
- name: nginx
image: nginx
#添加
ports:
- containerPort: 80
name: http
protocol: TCP
创建一个新的名为front-end-svc的service,暴露容器的http端口。配置新的service,以通过调度它们节点上的NodePort暴露各个Pods。
kubectl expose deployment front-end --port=80\
--target-port=80\
--name=front-end-svc\
--type=NodePort