写个AI小助手:轻松对话,工作更轻松高效了!

源起

在那个宁静的午后,我沉浸在实验的乐趣中,耳边轻柔的音乐伴随着我专注的探索。然而,每当实验中需要查阅资料时,我总是不得不依赖ChatGPT。众所周知,访问ChatGPT并非易事,而国内的使用又因登录步骤繁琐而让人望而却步。我渴望有一个便捷的窗口,只需将问题抛出,便能直接获得所需的信息。比如,最近我在研究Greenplum数据库,对于gpstop命令的众多参数,我并不喜欢阅读那些冗长的英文帮助文档。如果能有人帮我简要总结一下各个参数的含义及其使用方法,那将是我莫大的福音。毕竟,这种信息在网上固然不少,但繁琐的查找过程实在让人心生厌烦。

思考

我心中萌生了一个构想:打造一个专属的个人工具。这个工具设计得极为简约,核心功能仅限于对话交流,无需繁琐的登录或注册流程。它的界面设计将充满个性,酷炫十足,完美契合我的审美风格。无论是手机端、平板还是电脑上,都能流畅使用。更重要的是,它不会存储对话历史,每次刷新界面后,历史信息都会被清空,从而确保每一次对话都是全新的开始。这样的设想,既实用又充满未来感。

架构

我只是一个小运维、不会后端java、也不想接触VUE、而且也不想那么困难,因此采用的架构是:

  • 前端:Streamlit 框架
  • 后端:Streamlit 框架
  • 编程语言:Python 语言
  • 部署方式:Docker 运行时
  • 模型:GLM4-Flash 模型(FREE)

设计蓝图既定,我便满怀热情地着手实施。首要任务是开发一个API接口。鉴于预算有限,我决定寻找一个免费的API服务。在网络上广泛搜寻后,我发现了一个理想的平台——清华智谱SDK。仔细阅读了官方的SDK说明文档,我发现搭建过程似乎并不复杂,很快就能上手。于是,我跃跃欲试,开始了调试工作。然而,令人意外的是,系统竟然提示我欠费。这让我感到困惑,难道是我误解了什么?这究竟是怎么回事呢?

原来如此,我竟然早已拥有这个账户,只是没想到API服务已经过期了,连官方赠送的期限也早已届满。既然如此,那也没关系,重新申请一个新的API即可。既然模型选择了性能卓越的GLM4-Flash,那就开始编写一个简单的code.py文件,来测试一下模型的调用功能。

代码

core.py

我将启动一个核心API的调用测试,亲自检验这个接口的实用性与性能。当然,为了更深入地了解,我将利用AI的辅助,看看这个接口是否能够满足我们的期待。

python代码解读复制代码from zhipuai import ZhipuAI

# 读取 API 密钥
def read_api_key(file_path="GLM4-Flash.key"):
    with open(file_path, "r") as file:
        api_key = file.read().strip()  # 读取并去掉多余的空白字符
    return api_key

# 使用读取到的 API 密钥初始化客户端
api_key = read_api_key("GLM4-Flash.key")  # 根据实际路径调整文件名
client = ZhipuAI(api_key=api_key)

# 用来存储对话历史
messages = []

def chat_with_model():
    while True:
        # 获取用户输入
        user_input = input("你:")

        if user_input.lower() == "exit":
            print("退出对话")
            break

        # 将用户输入添加到消息历史
        messages.append({"role": "user", "content": user_input})

        # 调用 API 获取模型的响应
        response = client.chat.completions.create(
            model="glm-4-flash",  # 使用的模型
            messages=messages  # 传递对话历史
        )

        # 提取并打印模型的响应
        model_response = response.choices[0].message.content  # 修正此行
        print(f"模型:{model_response}")
        
        # 将模型的响应添加到消息历史
        messages.append({"role": "assistant", "content": model_response})

if __name__ == "__main__":
    print("欢迎与自然语言模型聊天!输入 'exit' 结束对话。")
    chat_with_model()
powershell代码解读复制代码PS D:\zhipu> python core.py                                                                                                                      
欢迎与自然语言模型聊天!输入 'exit' 结束对话。
你:你好!你是什么模型?
模型:你好!我是一个基于人工智能的语言模型,名为 ChatGLM。我是在清华大学 KEG 实验室和智谱 AI 公司于 2024 年共同训练的语言模型 GLM-4 的基础上开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。
你:exit
退出对话
PS D:\zhipu> 

经过一番测试,一切顺利,接口表现良好。接下来,我将着手解决界面设计的问题。我选择了一个之前使用过的框架——Streamlit。这个框架非常有趣,它允许我使用Markdown(MD)语法直接编写前端页面。最令人兴奋的是,如果我对代码进行了修改,甚至无需退出页面,只需刷新一下,就能实时看到修改后的效果。

ui.py

开干!

python代码解读复制代码import streamlit as st
from zhipuai import ZhipuAI

# 读取 API 密钥
...(略)

# 页面标题
st.set_page_config(page_title="# AI @heike07")
st.title("# AI @heike07")

# 历史对话
with st.container():
    st.markdown('<div>')
    # 显示消息
    for msg in st.session_state.messages:
        if msg["role"] == "user":
            st.markdown(f'<div>{msg["content"]}</div>')
        else:
            st.markdown(f'<div>{msg["content"]}</div>')
    st.markdown('</div>')

# 用户输入框
user_input = st.text_input("请输入消息:", "")
if st.button("提交") and user_input:
    st.session_state.messages.append({"role": "user", "content": user_input})
    response = client.chat.completions.create(
        model="glm-4-flash",
        messages=st.session_state.messages
    )

    model_response = response.choices[0].message.content
    st.session_state.messages.append({"role": "assistant", "content": model_response})
    st.rerun()

if not user_input:
    st.warning("请输入消息进行对话。")

通过浏览器访问localhost:8501测试了,一下没有什么问题,也可以实现基础的对话。

礼成,接下来就是界面的优化。

python代码解读复制代码# 找到历史记录这部分带入class样式
# 显示历史对话
for msg in st.session_state.messages:
    if msg["role"] == "user":
        st.markdown(f'<div class="user-message">{msg["content"]}</div>', unsafe_allow_html=True)
    else:
        st.markdown(f'<div class="assistant-message">{msg["content"]}</div>', unsafe_allow_html=True)

# 再写一点样式
st.markdown("""
    <style>
    .user-message {
        background: linear-gradient(135deg, #00c6ff, #0072ff);  /* 蓝色渐变 */
        padding: 15px;
        border-radius: 20px;
        margin: 12px 0;
        width: auto;
        word-wrap: break-word;
        text-align: left;
        display: inline-block;
        float: right;
        box-shadow: 0 8px 30px rgba(0, 114, 255, 0.3);  /* 强化阴影 */
        color: white;
        border: 2px solid rgba(0, 114, 255, 0.6);  /* 边框 */
    }
    .assistant-message {
        background: linear-gradient(135deg, #00b09b, #96c93d);  /* 绿色渐变 */
        padding: 15px;
        border-radius: 20px;
        margin: 12px 0;
        width: auto;
        word-wrap: break-word;
        text-align: left;
        display: inline-block;
        box-shadow: 0 8px 30px rgba(0, 255, 123, 0.3);  /* 强化阴影 */
        color: white;
        border: 2px solid rgba(0, 255, 123, 0.6);  /* 边框 */
    }
    </style>
""", unsafe_allow_html=True)

OK,没问题了,非常酷炫!

看一下效果,没什么问题了。 image.png

部署

接下来就是部署了,我们采用docker方式来部署,蛮简单的写一个dockerfile文件来实现这个事情

yaml代码解读复制代码# 使用官方的 Python 镜像作为基础镜像
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录下的所有文件到容器中的 /app 目录
COPY . /app

# 设置清华大学的 PyPI 镜像源
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装程序所需的 Python 库
RUN pip install -r requirements.txt

# 开放 8501 端口(Streamlit 默认端口)
EXPOSE 8501

# 设置容器启动时的命令,运行 Streamlit 应用
CMD ["streamlit", "run", "ui.py"]

访问

上面只是简单解释一下从0-1的过程,该项目已经开源到github,具体可以去ai.heike07.cn查看并访问,当然如果你不想构建自己的也可以用我的,嘿嘿,不要搞破坏就行~

继续滚去做实验了,但是多了一个便携的小工具,多端都可以访问,嘿嘿!

作者:heike07
链接:https://juejin.cn/spost/7449419385947602978
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

数据备份工具 BackupSerenity V2.1 新增 CSV 导入工具集

数据备份工具 BackupSerenity V2.1 新增 CSV 导入工具集

CSV 导入工具集

作用:将将包含表头的 CSV 文件批量导入至 MYSQL

使用方式:

启动脚本

nohup python3 csv_input_mysql.py > csv_input_mysql.log &
生成的文件名称 csv_input_mysql.log 可以根据情况修改,如果想保留全部日志可以将 > 替换为 >> 即可

导出错误日志

cat csv_input_mysql.log | grep '创建失败' > csv_input_mysql.log.ERR

获取全部 CSV 文件名称 [成功]

cat csv_input_mysql.log | grep '正在疯狂处理' | awk '{print $2}' > csv_files.list

获取全部表名称 [成功]

cat csv_input_mysql.log | grep '创建成功' | awk '{print $2}' > table_names.list

数据验证

源数据无法预估质量,会出现源数据换行等情况,此时可以使用清洗工具进行清洗,清洗后即可进行验证

通过数据导入程序进行导入程序后,对原始csv进行清洗
编辑 cleaned_data.py 文件修改

# 清洗前源数据
input_file = 'you_file.csv'
# 清洗后数据
output_file = 'cleaned_you_file.csv'

修改完成后进行执行
python3 cleaned_data.py

执行成功后通过wc命令进行行数获取
wc -l cleaned_you_file.csv

数据库通过
SELECT COUNT(1) FROM you_file

得出的数差值为1

数据验证成功!

具体点击原文链接查看,或直接访问 此链接 查看

一次异常操作引发的K8S集群崩溃修复

# K8s rescue plan

··· Reset the virtual machine image, but did not reset my brain!

## cause

Directly power off all nodes and set Docker to not start up

## Can it be reproduced

Yes, the number of replicates is 2

##Analysis process

Restore the virtual machine to the normal state of the k8s cluster, observe the results of "Docker ps - a" and record it

### master

```shell
# masternode
[root@k8smaster ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8smaster Ready control-plane,master 7d21h v1.23.6
k8snode01 Ready <none> 7d21h v1.23.6
k8snode02 Ready <none> 7d21h v1.23.6
[root@k8smaster ~]#
[root@k8smaster ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c12f3abcf771 a4ca41631cc7 "/coredns -conf /etc…" 7 days ago Up 7 days k8s_coredns_coredns-6d8c4cb4d-6jjh5_kube-system_5880858e-7211-4bbb-8c93-90c928f68622_0
95edcbc13770 a4ca41631cc7 "/coredns -conf /etc…" 7 days ago Up 7 days k8s_coredns_coredns-6d8c4cb4d-d7st4_kube-system_078cc83a-b061-4e81-bcf6-cf21073cdd4e_0
5b0e34035658 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_coredns-6d8c4cb4d-6jjh5_kube-system_5880858e-7211-4bbb-8c93-90c928f68622_0
e78106ac1966 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_coredns-6d8c4cb4d-d7st4_kube-system_078cc83a-b061-4e81-bcf6-cf21073cdd4e_0
68aba3e09b9b d73868a08083 "/opt/bin/flanneld -…" 7 days ago Up 7 days k8s_kube-flannel_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
95c152dd0190 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
d011952c4be9 f21c8d21558c "/usr/local/bin/kube…" 7 days ago Up 7 days k8s_kube-proxy_kube-proxy-2g5ql_kube-system_5d508d75-495a-4159-87ee-20a29d9061e7_0
47da71089e8e registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-proxy-2g5ql_kube-system_5d508d75-495a-4159-87ee-20a29d9061e7_0
282fbf54321f bc6794cb54ac "kube-scheduler --au…" 7 days ago Up 7 days k8s_kube-scheduler_kube-scheduler-k8smaster_kube-system_c02a11b9d6ed102dae71c2a5ba394332_0
c650a0a82e8f 25f8c7f3da61 "etcd --advertise-cl…" 7 days ago Up 7 days k8s_etcd_etcd-k8smaster_kube-system_3b9b93edf9e5751a1bf3a1e147cce967_0
81b1b2d16921 1dab4fc7b6e0 "kube-controller-man…" 7 days ago Up 7 days k8s_kube-controller-manager_kube-controller-manager-k8smaster_kube-system_62f82849ccf351f48be952f05e36c490_0
3ddac11bfee8 62bc5d8258d6 "kube-apiserver --ad…" 7 days ago Up 7 days k8s_kube-apiserver_kube-apiserver-k8smaster_kube-system_ab1948dc99a13b01ea539c462d17491c_0
5b5d34542b36 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-scheduler-k8smaster_kube-system_c02a11b9d6ed102dae71c2a5ba394332_0
a9bfe6ec50de registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-controller-manager-k8smaster_kube-system_62f82849ccf351f48be952f05e36c490_0
754226687c2f registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-apiserver-k8smaster_kube-system_ab1948dc99a13b01ea539c462d17491c_0
4d09932ad92f registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_etcd-k8smaster_kube-system_3b9b93edf9e5751a1bf3a1e147cce967_0
[root@k8smaster ~]#


[root@k8smaster ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c12f3abcf771 a4ca41631cc7 "/coredns -conf /etc…" 7 days ago Up 7 days k8s_coredns_coredns-6d8c4cb4d-6jjh5_kube-system_5880858e-7211-4bbb-8c93-90c928f68622_0
95edcbc13770 a4ca41631cc7 "/coredns -conf /etc…" 7 days ago Up 7 days k8s_coredns_coredns-6d8c4cb4d-d7st4_kube-system_078cc83a-b061-4e81-bcf6-cf21073cdd4e_0
5b0e34035658 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_coredns-6d8c4cb4d-6jjh5_kube-system_5880858e-7211-4bbb-8c93-90c928f68622_0
e78106ac1966 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_coredns-6d8c4cb4d-d7st4_kube-system_078cc83a-b061-4e81-bcf6-cf21073cdd4e_0
68aba3e09b9b d73868a08083 "/opt/bin/flanneld -…" 7 days ago Up 7 days k8s_kube-flannel_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
0936e9013449 flannel/flannel "cp -f /etc/kube-fla…" 7 days ago Exited (0) 7 days ago k8s_install-cni_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
88cf1da60660 flannel/flannel-cni-plugin "cp -f /flannel /opt…" 7 days ago Exited (0) 7 days ago k8s_install-cni-plugin_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
95c152dd0190 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
d011952c4be9 f21c8d21558c "/usr/local/bin/kube…" 7 days ago Up 7 days k8s_kube-proxy_kube-proxy-2g5ql_kube-system_5d508d75-495a-4159-87ee-20a29d9061e7_0
47da71089e8e registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-proxy-2g5ql_kube-system_5d508d75-495a-4159-87ee-20a29d9061e7_0
282fbf54321f bc6794cb54ac "kube-scheduler --au…" 7 days ago Up 7 days k8s_kube-scheduler_kube-scheduler-k8smaster_kube-system_c02a11b9d6ed102dae71c2a5ba394332_0
c650a0a82e8f 25f8c7f3da61 "etcd --advertise-cl…" 7 days ago Up 7 days k8s_etcd_etcd-k8smaster_kube-system_3b9b93edf9e5751a1bf3a1e147cce967_0
81b1b2d16921 1dab4fc7b6e0 "kube-controller-man…" 7 days ago Up 7 days k8s_kube-controller-manager_kube-controller-manager-k8smaster_kube-system_62f82849ccf351f48be952f05e36c490_0
3ddac11bfee8 62bc5d8258d6 "kube-apiserver --ad…" 7 days ago Up 7 days k8s_kube-apiserver_kube-apiserver-k8smaster_kube-system_ab1948dc99a13b01ea539c462d17491c_0
5b5d34542b36 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-scheduler-k8smaster_kube-system_c02a11b9d6ed102dae71c2a5ba394332_0
a9bfe6ec50de registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-controller-manager-k8smaster_kube-system_62f82849ccf351f48be952f05e36c490_0
754226687c2f registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-apiserver-k8smaster_kube-system_ab1948dc99a13b01ea539c462d17491c_0
4d09932ad92f registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_etcd-k8smaster_kube-system_3b9b93edf9e5751a1bf3a1e147cce967_0
[root@k8smaster ~]#

[root@k8smaster ~]# docker ps -a | grep Exited
0936e9013449 flannel/flannel "cp -f /etc/kube-fla…" 7 days ago Exited (0) 7 days ago k8s_install-cni_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
88cf1da60660 flannel/flannel-cni-plugin "cp -f /flannel /opt…" 7 days ago Exited (0) 7 days ago k8s_install-cni-plugin_kube-flannel-ds-zz5cl_kube-flannel_24b1f309-0143-4627-8770-b78a7de603b0_0
[root@k8smaster ~]#

[root@k8smaster ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/k8s-nginx-6d779d947c-59qh8 1/1 Running 0 7d21h
pod/k8s-nginx-6d779d947c-djzx7 1/1 Running 0 7d21h
pod/k8s-nginx-6d779d947c-wxhx2 1/1 Running 0 7d21h

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 7d21h

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/k8s-nginx 3/3 3 3 7d21h

NAME DESIRED CURRENT READY AGE
replicaset.apps/k8s-nginx-6d779d947c 3 3 3 7d21h
[root@k8smaster ~]#

[root@k8smaster ~]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since Mon 2023-09-11 16:15:43 CST; 1 weeks 0 days ago
Docs: https://kubernetes.io/docs/
Main PID: 13497 (kubelet)
Tasks: 15
Memory: 68.3M
CGroup: /system.slice/kubelet.service
└─13497 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --network-plugin=cni --po...

Sep 11 16:24:44 k8smaster kubelet[13497]: I0911 16:24:44.189915 13497 reconciler.go:221] "operationExecutor.VerifyControllerAttachedVolume started for volume \"config-volume\" (UniqueName: \"kubernetes...
Sep 11 16:24:44 k8smaster kubelet[13497]: I0911 16:24:44.189968 13497 reconciler.go:221] "operationExecutor.VerifyControllerAttachedVolume started for volume \"kube-api-access-jrpx5\" (UniqueName: \"ku...
Sep 11 16:24:44 k8smaster kubelet[13497]: I0911 16:24:44.190014 13497 reconciler.go:221] "operationExecutor.VerifyControllerAttachedVolume started for volume \"kube-api-access-pmkws\" (UniqueName: \"ku...
Sep 11 16:24:44 k8smaster kubelet[13497]: I0911 16:24:44.190036 13497 reconciler.go:221] "operationExecutor.VerifyControllerAttachedVolume started for volume \"config-volume\" (UniqueName: \"kubernetes...
Sep 11 16:24:44 k8smaster kubelet[13497]: I0911 16:24:44.711527 13497 pod_container_deletor.go:79] "Container not found in pod's containers" containerID="e78106ac1966087346b4b511a425ac7a3...6b1130cab1b65"
Sep 11 16:24:44 k8smaster kubelet[13497]: map[string]interface {}{"cniVersion":"0.3.1", "hairpinMode":true, "ipMasq":false, "ipam":map[string]interface {}{"ranges":[][]map[string]interface {}{[]map[strin...
Sep 11 16:24:44 k8smaster kubelet[13497]: delegateAdd: netconf sent to delegate plugin:
Sep 11 16:24:44 k8smaster kubelet[13497]: {"cniVersion":"0.3.1","hairpinMode":true,"ipMasq":false,"ipam":{"ranges":[[{"subnet":"10.244.0.0/24"}]],"routes":[{"dst":"10.244.0.0/16"}],"type":"...ype":"bridge"}
Sep 11 16:24:44 k8smaster kubelet[13497]: map[string]interface {}{"cniVersion":"0.3.1", "hairpinMode":true, "ipMasq":false, "ipam":map[string]interface {}{"ranges":[][]map[string]interface {}{[]map[strin...
Sep 11 16:24:44 k8smaster kubelet[13497]: delegateAdd: netconf sent to delegate plugin:
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8smaster ~]#

[root@k8smaster ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:37:27:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.100/24 brd 192.168.7.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe37:2788/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:37:27:92 brd ff:ff:ff:ff:ff:ff
inet 192.168.157.149/24 brd 192.168.157.255 scope global noprefixroute dynamic ens36
valid_lft 1671sec preferred_lft 1671sec
inet6 fe80::bdcf:3ffc:b6f6:f1ed/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:e0:e8:64:12 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
5: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether f2:94:58:2b:80:92 brd ff:ff:ff:ff:ff:ff
inet 10.244.0.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
inet6 fe80::f094:58ff:fe2b:8092/64 scope link
valid_lft forever preferred_lft forever
6: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether 4e:41:5e:15:b7:62 brd ff:ff:ff:ff:ff:ff
inet 10.244.0.1/24 brd 10.244.0.255 scope global cni0
valid_lft forever preferred_lft forever
inet6 fe80::4c41:5eff:fe15:b762/64 scope link
valid_lft forever preferred_lft forever
7: vetha9ed6409@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
link/ether 76:e0:63:90:81:7d brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::74e0:63ff:fe90:817d/64 scope link
valid_lft forever preferred_lft forever
8: veth7a07689e@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
link/ether c6:66:fb:c0:75:cd brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::c466:fbff:fec0:75cd/64 scope link
valid_lft forever preferred_lft forever
[root@k8smaster ~]#

[root@k8smaster ~]# route
-bash: route: command not found
[root@k8smaster ~]#

[root@k8smaster ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
KUBE-NODEPORTS all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes health check service ports */
KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
KUBE-FORWARD all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding rules */
KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes externally-visible service portals */
DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0
DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
FLANNEL-FWD all -- 0.0.0.0/0 0.0.0.0/0 /* flanneld forward */

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER (1 references)
target prot opt source destination

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain FLANNEL-FWD (1 references)
target prot opt source destination
ACCEPT all -- 10.244.0.0/16 0.0.0.0/0 /* flanneld forward */
ACCEPT all -- 0.0.0.0/0 10.244.0.0/16 /* flanneld forward */

Chain KUBE-EXTERNAL-SERVICES (2 references)
target prot opt source destination

Chain KUBE-FIREWALL (2 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000
DROP all -- !127.0.0.0/8 127.0.0.0/8 /* block incoming localnet connections */ ! ctstate RELATED,ESTABLISHED,DNAT

Chain KUBE-FORWARD (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding rules */ mark match 0x4000/0x4000
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding conntrack rule */ ctstate RELATED,ESTABLISHED

Chain KUBE-KUBELET-CANARY (0 references)
target prot opt source destination

Chain KUBE-NODEPORTS (1 references)
target prot opt source destination

Chain KUBE-PROXY-CANARY (0 references)
target prot opt source destination

Chain KUBE-SERVICES (2 references)
target prot opt source destination
[root@k8smaster ~]#
```

Analysis shows that in a normal cluster, k8s can see that there are two initialization containers in the node node that are generated by copying files, while the others are all in the up state

### node01

```shell
#node01

[root@k8snode01 ~]# kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@k8snode01 ~]#

[root@k8snode01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02d1b7ed4d94 nginx "/docker-entrypoint.…" 7 days ago Up 7 days k8s_nginx_k8s-nginx-6d779d947c-59qh8_default_056c7a0e-ac54-40f0-ad4d-70d5ec6f2a92_0
ad3c063c2818 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_k8s-nginx-6d779d947c-59qh8_default_056c7a0e-ac54-40f0-ad4d-70d5ec6f2a92_0
df414c590b55 d73868a08083 "/opt/bin/flanneld -…" 7 days ago Up 7 days k8s_kube-flannel_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
25d0c45d1b2d registry.aliyuncs.com/google_containers/kube-proxy "/usr/local/bin/kube…" 7 days ago Up 7 days k8s_kube-proxy_kube-proxy-zr2m6_kube-system_7e2bdbc0-11ee-4263-8752-5342d93e9c5f_0
f426822aee9e registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-proxy-zr2m6_kube-system_7e2bdbc0-11ee-4263-8752-5342d93e9c5f_0
f8f25a24e78f registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
[root@k8snode01 ~]#

[root@k8snode01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02d1b7ed4d94 nginx "/docker-entrypoint.…" 7 days ago Up 7 days k8s_nginx_k8s-nginx-6d779d947c-59qh8_default_056c7a0e-ac54-40f0-ad4d-70d5ec6f2a92_0
ad3c063c2818 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_k8s-nginx-6d779d947c-59qh8_default_056c7a0e-ac54-40f0-ad4d-70d5ec6f2a92_0
df414c590b55 d73868a08083 "/opt/bin/flanneld -…" 7 days ago Up 7 days k8s_kube-flannel_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
70d322520704 flannel/flannel "cp -f /etc/kube-fla…" 7 days ago Exited (0) 7 days ago k8s_install-cni_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
abac9835c972 flannel/flannel-cni-plugin "cp -f /flannel /opt…" 7 days ago Exited (0) 7 days ago k8s_install-cni-plugin_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
25d0c45d1b2d registry.aliyuncs.com/google_containers/kube-proxy "/usr/local/bin/kube…" 7 days ago Up 7 days k8s_kube-proxy_kube-proxy-zr2m6_kube-system_7e2bdbc0-11ee-4263-8752-5342d93e9c5f_0
f426822aee9e registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-proxy-zr2m6_kube-system_7e2bdbc0-11ee-4263-8752-5342d93e9c5f_0
f8f25a24e78f registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
[root@k8snode01 ~]#

[root@k8snode01 ~]# docker ps -a | grep Exited
70d322520704 flannel/flannel "cp -f /etc/kube-fla…" 7 days ago Exited (0) 7 days ago k8s_install-cni_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
abac9835c972 flannel/flannel-cni-plugin "cp -f /flannel /opt…" 7 days ago Exited (0) 7 days ago k8s_install-cni-plugin_kube-flannel-ds-2bf4k_kube-flannel_5e1afce5-b4d3-45fd-9c58-4cace2b43283_0
[root@k8snode01 ~]#

[root@k8snode01 ~]# route
-bash: route: command not found
[root@k8snode01 ~]#

[root@k8snode01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:06:ce:c8 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.101/24 brd 192.168.7.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe06:cec8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:06:ce:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.157.150/24 brd 192.168.157.255 scope global noprefixroute dynamic ens36
valid_lft 1083sec preferred_lft 1083sec
inet6 fe80::2bba:1bc9:5ff2:c21a/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:7b:05:53:6f brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
5: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether 7a:b7:34:d3:fa:f1 brd ff:ff:ff:ff:ff:ff
inet 10.244.1.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
inet6 fe80::78b7:34ff:fed3:faf1/64 scope link
valid_lft forever preferred_lft forever
6: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether c6:41:f3:f6:6b:39 brd ff:ff:ff:ff:ff:ff
inet 10.244.1.1/24 brd 10.244.1.255 scope global cni0
valid_lft forever preferred_lft forever
inet6 fe80::c441:f3ff:fef6:6b39/64 scope link
valid_lft forever preferred_lft forever
7: vethdffd1800@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
link/ether 6e:f9:14:ca:b7:3a brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::6cf9:14ff:feca:b73a/64 scope link
valid_lft forever preferred_lft forever
[root@k8snode01 ~]#

[root@k8snode01 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
KUBE-NODEPORTS all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes health check service ports */
KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
KUBE-FORWARD all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding rules */
KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes externally-visible service portals */
DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0
DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
FLANNEL-FWD all -- 0.0.0.0/0 0.0.0.0/0 /* flanneld forward */

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER (1 references)
target prot opt source destination

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain FLANNEL-FWD (1 references)
target prot opt source destination
ACCEPT all -- 10.244.0.0/16 0.0.0.0/0 /* flanneld forward */
ACCEPT all -- 0.0.0.0/0 10.244.0.0/16 /* flanneld forward */

Chain KUBE-EXTERNAL-SERVICES (2 references)
target prot opt source destination

Chain KUBE-FIREWALL (2 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000
DROP all -- !127.0.0.0/8 127.0.0.0/8 /* block incoming localnet connections */ ! ctstate RELATED,ESTABLISHED,DNAT

Chain KUBE-FORWARD (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding rules */ mark match 0x4000/0x4000
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding conntrack rule */ ctstate RELATED,ESTABLISHED

Chain KUBE-KUBELET-CANARY (0 references)
target prot opt source destination

Chain KUBE-NODEPORTS (1 references)
target prot opt source destination

Chain KUBE-PROXY-CANARY (0 references)
target prot opt source destination

Chain KUBE-SERVICES (2 references)
target prot opt source destination
[root@k8snode01 ~]#

```
Analysis shows that in a normal cluster, k8s can see that there are two initialization containers in the node node that are generated by copying files, while the others are all in the up state

### node02

```shell
#node02

[root@k8snode02 ~]# kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@k8snode02 ~]#
[root@k8snode02 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3e4b9444378b nginx "/docker-entrypoint.…" 7 days ago Up 7 days k8s_nginx_k8s-nginx-6d779d947c-wxhx2_default_43a547de-284a-4055-879b-7ecd926d0a41_0
25593b6e2880 nginx "/docker-entrypoint.…" 7 days ago Up 7 days k8s_nginx_k8s-nginx-6d779d947c-djzx7_default_01b1b881-d996-478c-bf7d-4f9491d0d63f_0
c4bba5dbdfb3 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_k8s-nginx-6d779d947c-djzx7_default_01b1b881-d996-478c-bf7d-4f9491d0d63f_0
d42203824011 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_k8s-nginx-6d779d947c-wxhx2_default_43a547de-284a-4055-879b-7ecd926d0a41_0
befe5b6209fd d73868a08083 "/opt/bin/flanneld -…" 7 days ago Up 7 days k8s_kube-flannel_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
eb8137f30356 registry.aliyuncs.com/google_containers/kube-proxy "/usr/local/bin/kube…" 7 days ago Up 7 days k8s_kube-proxy_kube-proxy-n95s6_kube-system_dee6cae8-47a8-4b79-8eb9-1aeea3f673dd_0
9de41647ef33 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
fa5300178a42 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-proxy-n95s6_kube-system_dee6cae8-47a8-4b79-8eb9-1aeea3f673dd_0
[root@k8snode02 ~]#
[root@k8snode02 ~]#
[root@k8snode02 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3e4b9444378b nginx "/docker-entrypoint.…" 7 days ago Up 7 days k8s_nginx_k8s-nginx-6d779d947c-wxhx2_default_43a547de-284a-4055-879b-7ecd926d0a41_0
25593b6e2880 nginx "/docker-entrypoint.…" 7 days ago Up 7 days k8s_nginx_k8s-nginx-6d779d947c-djzx7_default_01b1b881-d996-478c-bf7d-4f9491d0d63f_0
c4bba5dbdfb3 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_k8s-nginx-6d779d947c-djzx7_default_01b1b881-d996-478c-bf7d-4f9491d0d63f_0
d42203824011 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_k8s-nginx-6d779d947c-wxhx2_default_43a547de-284a-4055-879b-7ecd926d0a41_0
befe5b6209fd d73868a08083 "/opt/bin/flanneld -…" 7 days ago Up 7 days k8s_kube-flannel_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
80713a3f68d4 flannel/flannel "cp -f /etc/kube-fla…" 7 days ago Exited (0) 7 days ago k8s_install-cni_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
354424bed696 flannel/flannel-cni-plugin "cp -f /flannel /opt…" 7 days ago Exited (0) 7 days ago k8s_install-cni-plugin_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
eb8137f30356 registry.aliyuncs.com/google_containers/kube-proxy "/usr/local/bin/kube…" 7 days ago Up 7 days k8s_kube-proxy_kube-proxy-n95s6_kube-system_dee6cae8-47a8-4b79-8eb9-1aeea3f673dd_0
9de41647ef33 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
fa5300178a42 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 7 days ago Up 7 days k8s_POD_kube-proxy-n95s6_kube-system_dee6cae8-47a8-4b79-8eb9-1aeea3f673dd_0
[root@k8snode02 ~]#
[root@k8snode02 ~]#
[root@k8snode02 ~]# docker ps -a | grep Exited
80713a3f68d4 flannel/flannel "cp -f /etc/kube-fla…" 7 days ago Exited (0) 7 days ago k8s_install-cni_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
354424bed696 flannel/flannel-cni-plugin "cp -f /flannel /opt…" 7 days ago Exited (0) 7 days ago k8s_install-cni-plugin_kube-flannel-ds-gpnpx_kube-flannel_c6a1656c-d0cf-4026-b0d7-ff8885f24c1a_0
[root@k8snode02 ~]#
[root@k8snode02 ~]#

[root@k8snode02 ~]# route
-bash: route: command not found
[root@k8snode02 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a4:87:a1 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.102/24 brd 192.168.7.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea4:87a1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a4:87:ab brd ff:ff:ff:ff:ff:ff
inet 192.168.157.148/24 brd 192.168.157.255 scope global noprefixroute dynamic ens36
valid_lft 1193sec preferred_lft 1193sec
inet6 fe80::ba59:a533:42da:cbfc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:e1:ee:f1:b8 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
5: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether fa:c3:b3:14:5d:1b brd ff:ff:ff:ff:ff:ff
inet 10.244.2.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
inet6 fe80::f8c3:b3ff:fe14:5d1b/64 scope link
valid_lft forever preferred_lft forever
6: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether aa:6c:34:ed:3b:28 brd ff:ff:ff:ff:ff:ff
inet 10.244.2.1/24 brd 10.244.2.255 scope global cni0
valid_lft forever preferred_lft forever
inet6 fe80::a86c:34ff:feed:3b28/64 scope link
valid_lft forever preferred_lft forever
7: veth3f1fc914@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
link/ether 12:74:54:3c:ef:77 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::1074:54ff:fe3c:ef77/64 scope link
valid_lft forever preferred_lft forever
8: veth1b04c2fb@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
link/ether 82:01:af:6c:ef:d9 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::8001:afff:fe6c:efd9/64 scope link
valid_lft forever preferred_lft forever
[root@k8snode02 ~]#


[root@k8snode02 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
KUBE-NODEPORTS all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes health check service ports */
KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
KUBE-FORWARD all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding rules */
KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes externally-visible service portals */
DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0
DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
FLANNEL-FWD all -- 0.0.0.0/0 0.0.0.0/0 /* flanneld forward */

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER (1 references)
target prot opt source destination

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain FLANNEL-FWD (1 references)
target prot opt source destination
ACCEPT all -- 10.244.0.0/16 0.0.0.0/0 /* flanneld forward */
ACCEPT all -- 0.0.0.0/0 10.244.0.0/16 /* flanneld forward */

Chain KUBE-EXTERNAL-SERVICES (2 references)
target prot opt source destination

Chain KUBE-FIREWALL (2 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000
DROP all -- !127.0.0.0/8 127.0.0.0/8 /* block incoming localnet connections */ ! ctstate RELATED,ESTABLISHED,DNAT

Chain KUBE-FORWARD (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding rules */ mark match 0x4000/0x4000
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding conntrack rule */ ctstate RELATED,ESTABLISHED

Chain KUBE-KUBELET-CANARY (0 references)
target prot opt source destination

Chain KUBE-NODEPORTS (1 references)
target prot opt source destination

Chain KUBE-PROXY-CANARY (0 references)
target prot opt source destination

Chain KUBE-SERVICES (2 references)
target prot opt source destination
[root@k8snode02 ~]#
```

Analysis shows that in a normal cluster, k8s can see that there are two initialization containers in the node node that are generated by copying files, while the others are all in the up state

## Recurrence of destructive operations

Directly turn off the virtual machine power!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

## Fault viewing

### master

```powershell
[root@k8smaster ~]# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@k8smaster ~]# ip a

具体见:https://github.com/heike-07/K8s-study 或 https://gitee.com/heike07code/K8s-study

0.1-K8s rescue plan.md 部分~,篇幅过长不展示。

另外支持作者程序:

一个用于mysql备份的整合 star~

https://github.com/heike-07/Backup-tools

https://gitee.com/heike07code/Backup-tools

backup_tools 数据库备份软件,正式更名为 BackupSerenity

文章来源:https://www.oschina.net/news/254216/backup-tools-backupserenity

通知:Backup_Tools 数据库备份软件 正式更名为 BackupSerenity

backup 备份 serenity 宁静 意为 宁静的备份…… 是一个回馈开源的 MySQL 数据库备份工具~


对此录制了该软件的视频讲解,已经上传至 B 站,感谢大家支持!

Backupserenity 开源软件视频讲解合计点击下方进入:

https://www.bilibili.com/video/BV1mm4y1n7SA/?spm_id_from=333.999.0.0&vd_source=c3c55a6e403c7d3047b7e245753f135

通过 go 封装的一套基于 MySQL 备份的思路工具,可以实现以下内容:

1.Backup_Mysqldump_All

该程序为 mysqldump 原生的全库数据库备份程序。

2.Backup_Mysqldump_One

该程序为 mysqldump 原生的单个数据库备份程序。

3. Backup_Mydumper_MultiThread_Database_All

该程序为多线程全量数据库备份程序

4. Backup_Mydumper_MultiThread_Database_One

该程序为多线程单库全量数据库备份程序

5. Backup_XtraBackup_add

该程序为 XtraBackup 增量备份程序,用于提供 MySQL 数据库的全量 + 增量备份程序

全量 增量 单库备份 多库备份 全库备份 binlog 备份 文件备份 应该差不多能覆盖所有的 MySQL 备份需求了吧。

具体来项目查看 readme.md 欢迎 star 因为用到的都是开源的技术整理了一下也算是回馈开源 也是第一次回馈开源

GitHub 链接:https://github.com/heike-07/Backup-tools

gitee 链接:https://gitee.com/heike07code/Backup-tools

感谢大家支持!

欢迎大家 star ⭐ 谢谢! thanks

MySQL 备份思路整合工具

文章来源: https://www.oschina.net/news/251231

通过 go 封装的一套基于 MySQL 备份的思路工具,可以实现以下内容:

Backup_Mysqldump_All

该程序为 mysqldump 原生的全库数据库备份程序。

Backup_Mysqldump_One

该程序为 mysqldump 原生的单个数据库备份程序。

3. Backup_Mydumper_MultiThread_Database_All

该程序为多线程全量数据库备份程序

4. Backup_Mydumper_MultiThread_Database_One

该程序为多线程单库全量数据库备份程序

5. Backup_XtraBackup_add

该程序为 XtraBackup 增量备份程序,用于提供 MySQL 数据库的全量 + 增量备份程序

全量 增量 单库备份 多库备份 全库备份 binlog 备份 文件备份 应该差不多能覆盖所有的 MySQL 备份需求了吧。

具体来项目查看 readme.md 欢迎 star 因为用到的都是开源的技术整理了一下也算是回馈开源 也是第一次回馈开源

GitHub 链接:https://github.com/heike-07/Backup-tools

gitee 链接:https://gitee.com/heike07code/Backup-tools

感谢大家支持!

升级OPENSSH方案

作者:Heike07 版权所有

升级前准备

登陆SSH需要升级的机器

# 登陆ssh
λ ssh root@192.168.30.174
The authenticity of host '192.168.30.174 (192.168.30.174)' can't be established.
ECDSA key fingerprint is SHA256:Mw70Sv5uqPlHxhZbWb8JXcE8ckge4cMIw/CsHMZmAL4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.30.174' (ECDSA) to the list of known hosts.
root@192.168.30.174's password:
Last login: Tue Nov  1 16:13:34 2022
[root@localhost ~]#

准备Telnet方式使用防止SSH中断无法操作

# 安装telnet xinetd
yum -y install telnet* xinetd*
root@localhost ~]# cat /etc/securetty | grep pts
pts/1
pts/2
pts/3
pts/4
pts/5
[root@localhost ~]#
# 启动tlenet                              
[root@localhost ~]# systemctl start telnet.socket
[root@localhost ~]# systemctl status telnet.socket
                   
# 测试连接作为网络中断后的第二连接方式(非常重要)
S:\cmder
λ telnet 192.168.7.177
Kernel 3.10.0-1127.el7.x86_64 on an x86_64
localhost login: root
Password:
Last login: Fri Nov  4 10:20:51 from ::ffff:192.168.7.1
[root@localhost ~]#

升级中

准备编译环境

# 查看ssh版本
[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
# 安装编译相关资源
[root@localhost openssh-9.0p1]# yum install wget tar make gcc openssl-devel zlib-devel
# 查看sshrpm安装情况
[root@localhost ~]# rpm -qa | grep ssh
openssh-server-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
libssh2-1.8.0-3.el7.x86_64
# 将原有进行备份
[root@localhost ~]# mv /etc/ssh /etc/ssh.bak
# 删除ssh
[root@localhost ~]# yum remove openssh-7.4p1
# 查看删除结果
[root@localhost ~]# rpm -qa | grep ssh
libssh2-1.8.0-3.el7.x86_64
# 下载最新版本openssh 9.0p1
[root@localhost etc]# cd ~
[root@localhost ~]# wget https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz --no-check-cert ificate
# 解压缩
[root@localhost ~]# tar xzf openssh-9.0p1.tar.gz
[root@localhost ~]# cd openssh-9.0p1
[root@localhost openssh-9.0p1]#

编译过程

# 进行预编译生成make文件
[root@localhost openssh-9.0p1]# ./configure --sysconfdir=/etc/ssh
# 查看编译结果
OpenSSH has been configured with the following options:
                    User binaries: /usr/local/bin
                  System binaries: /usr/local/sbin
              Configuration files: /etc/ssh
                  Askpass program: /usr/local/libexec/ssh-askpass
                    Manual pages: /usr/local/share/man/manX
                        PID file: /var/run
Privilege separation chroot path: /var/empty
          sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
                  Manpage format: doc
                      PAM support: no
                  OSF SIA support: no
                KerberosV support: no
                  SELinux support: no
                  libedit support: no
                  libldns support: no
Solaris process contract support: no
          Solaris project support: no
        Solaris privilege support: no
      IP address in $DISPLAY hack: no
          Translate v4 in v6 hack: yes
                BSD Auth support: no
            Random number source: OpenSSL internal ONLY
            Privsep sandbox style: seccomp_filter
                  PKCS#11 support: yes
                U2F/FIDO support: yes
​
            Host: x86_64-pc-linux-gnu
        Compiler: cc
  Compiler flags: -g -O2 -pipe -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-strong -fPIE
Preprocessor flags:  -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE
    Linker flags:  -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -pie
        Libraries: -lcrypto -ldl -lutil -lz  -lcrypt -lresolv
# 编译
make
# 安装
make install
# 查看安装结果
(cd openbsd-compat && make)
make[1]: Entering directory `/root/openssh-9.0p1/openbsd-compat'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/openssh-9.0p1/openbsd-compat'
/usr/bin/mkdir -p /usr/local/bin
/usr/bin/mkdir -p /usr/local/sbin
/usr/bin/mkdir -p /usr/local/share/man/man1
/usr/bin/mkdir -p /usr/local/share/man/man5
/usr/bin/mkdir -p /usr/local/share/man/man8
/usr/bin/mkdir -p /usr/local/libexec
/usr/bin/mkdir -p -m 0755 /var/empty
/usr/bin/install -c -m 0755 -s ssh /usr/local/bin/ssh
/usr/bin/install -c -m 0755 -s scp /usr/local/bin/scp
/usr/bin/install -c -m 0755 -s ssh-add /usr/local/bin/ssh-add
/usr/bin/install -c -m 0755 -s ssh-agent /usr/local/bin/ssh-agent
/usr/bin/install -c -m 0755 -s ssh-keygen /usr/local/bin/ssh-keygen
/usr/bin/install -c -m 0755 -s ssh-keyscan /usr/local/bin/ssh-keyscan
/usr/bin/install -c -m 0755 -s sshd /usr/local/sbin/sshd
/usr/bin/install -c -m 4711 -s ssh-keysign /usr/local/libexec/ssh-keysign
/usr/bin/install -c -m 0755 -s ssh-pkcs11-helper /usr/local/libexec/ssh-pkcs11-helper
/usr/bin/install -c -m 0755 -s ssh-sk-helper /usr/local/libexec/ssh-sk-helper
/usr/bin/install -c -m 0755 -s sftp /usr/local/bin/sftp
/usr/bin/install -c -m 0755 -s sftp-server /usr/local/libexec/sftp-server
/usr/bin/install -c -m 644 ssh.1.out /usr/local/share/man/man1/ssh.1
/usr/bin/install -c -m 644 scp.1.out /usr/local/share/man/man1/scp.1
/usr/bin/install -c -m 644 ssh-add.1.out /usr/local/share/man/man1/ssh-add.1
/usr/bin/install -c -m 644 ssh-agent.1.out /usr/local/share/man/man1/ssh-agent.1
/usr/bin/install -c -m 644 ssh-keygen.1.out /usr/local/share/man/man1/ssh-keygen.1
/usr/bin/install -c -m 644 ssh-keyscan.1.out /usr/local/share/man/man1/ssh-keyscan.1
/usr/bin/install -c -m 644 moduli.5.out /usr/local/share/man/man5/moduli.5
/usr/bin/install -c -m 644 sshd_config.5.out /usr/local/share/man/man5/sshd_config.5
/usr/bin/install -c -m 644 ssh_config.5.out /usr/local/share/man/man5/ssh_config.5
/usr/bin/install -c -m 644 sshd.8.out /usr/local/share/man/man8/sshd.8
/usr/bin/install -c -m 644 sftp.1.out /usr/local/share/man/man1/sftp.1
/usr/bin/install -c -m 644 sftp-server.8.out /usr/local/share/man/man8/sftp-server.8
/usr/bin/install -c -m 644 ssh-keysign.8.out /usr/local/share/man/man8/ssh-keysign.8
/usr/bin/install -c -m 644 ssh-pkcs11-helper.8.out /usr/local/share/man/man8/ssh-pkcs11-helper.8
/usr/bin/install -c -m 644 ssh-sk-helper.8.out /usr/local/share/man/man8/ssh-sk-helper.8
/usr/bin/mkdir -p /etc/ssh
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
/usr/local/sbin/sshd -t -f /etc/ssh/sshd_config
[root@localhost openssh-9.0p1]#

操作相关文件参数调整

# 复制生成SSHD服务文件
[root@localhost openssh-9.0p1]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd
# 复制生成ssh-keygen到/usr/bin下
[root@localhost openssh-9.0p1]# cp -a /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
# 查看安装结果
[root@localhost openssh-9.0p1]# ll /usr/local/sbin/sshd
-rwxr-xr-x 1 root root 904160 Nov  4 10:32 /usr/local/sbin/sshd
[root@localhost openssh-9.0p1]#
# 修改主程序位置
[root@localhost openssh-9.0p1]# cat  /etc/init.d/sshd | grep SSHD=
SSHD=/usr/local/sbin/sshd
[root@localhost openssh-9.0p1]#
# 设置开机启动
[root@localhost openssh-9.0p1]# chkconfig --add sshd
[root@localhost openssh-9.0p1]# chkconfig sshd on
[root@localhost openssh-9.0p1]# systemctl daemon-reload
[root@localhost openssh-9.0p1]# systemctl restart sshd
[root@localhost openssh-9.0p1]# systemctl status sshd
​
# 设置root可以远程登陆
[root@localhost openssh-9.0p1]# cat /etc/ssh/sshd_config | grep PermitRootLogin
PermitRootLogin yes
# 重启sshd服务
[root@localhost openssh-9.0p1]# systemctl restart sshd
[root@localhost openssh-9.0p1]# systemctl status sshd

升级后处理

测试SSH

# 测试ssh连接情况
λ ssh root@192.168.30.174
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:jK6UYZCyzit0vG6RWF3Bta9pPRabEdc3zdDDtnmp3Pk.
Please contact your system administrator.
Add correct host key in C:\\Users\\ASUS/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\ASUS/.ssh/known_hosts:48
ECDSA host key for 192.168.30.174 has changed and you have requested strict checking.
Host key verification failed.
# 删除原有ssh记录公钥删除方式见常见错误
S:\cmder
λ vim C:\\Users\\ASUS/.ssh/known_hosts
# 测试登陆(必须测试,有问题看常见错误)
S:\cmder
λ ssh root@192.168.30.174
The authenticity of host '192.168.30.174 (192.168.30.174)' can't be established.
ECDSA key fingerprint is SHA256:jK6UYZCyzit0vG6RWF3Bta9pPRabEdc3zdDDtnmp3Pk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.30.174' (ECDSA) to the list of known hosts.
root@192.168.30.174's password:
Last login: Fri Nov  4 10:21:34 2022 from ::ffff:192.168.7.1
[root@localhost ~]# ssh -V
OpenSSH_9.0p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@localhost ~]#

telnet服务停用(便于其他情况处理)

# telnet服务停用
[root@localhost openssh-9.0p1]# systemctl status telnet.socket
[root@localhost openssh-9.0p1]# systemctl stop telnet.socket
[root@localhost openssh-9.0p1]# systemctl status telnet.socket
​
# 测试telnet
S:\cmder
λ telnet 192.168.7.177
Connecting To 192.168.7.177...Could not open connection to the host, on port 23: Connect failed
​

常见错误

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

登陆时如果提示这个是因为SSH加密算法失效了,因为升级了以后根的SSH加密是不一样删除客户端记录的公钥即可重新连接。

# 删除相关IP地址一整行的公钥记录即可
λ vim C:\\Users\\ASUS/.ssh/known_hosts
​
192.168.30.174 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB5qEg9PfFt8/5WFUHIrjDPJJLptw9oFZrUfl4ommrzbjFESVQhdAvAmhJcDd5mRKv5GZcTFU4Sd72TRck6ngdQ=

密码正确但是登陆不上

查看编译时是否将–sysconfdir=/etc/ssh参数进行添加,查看服务文件定义,可以看到当前为/etc/ssh

# 查看服务文件指定配置文件位置
[root@localhost openssh-9.0p1]# cat /etc/init.d/sshd | grep restorecon
       if [ -x /sbin/restorecon ]; then
              /sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub
              /sbin/restorecon /etc/ssh/ssh_host_dsa_key.pub
              /sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub
[root@localhost openssh-9.0p1]#

作者:Heike07 版权所有

MYSQL-Centos本地安装(RPM)

本次教程为mysql的RPM安装原创教程,如果有不对的地方欢迎指出!

欢迎关注heike07~

准备文件

tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar(需要在mysql官方下载)

开始安装

删除原有包 mariadb rpm(演示的是系统预装情况,根据自己的情况进行处理)

rpm -qa|grep mariad

rpm -e –nodeps mariadb-libs-5.5.56-2.el7.x86_64

rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm –force –nodeps

rpm -ivh mysql-community-devel-5.7.31-1.el7.x86_64.rpm

启动mysql

systemctl start mysqld

开机启动设置

systemctl enable mysqld

查看mysql状态 正常应该是active

systemctl status mysqld

初始化配置

查看临时密码

grep ‘temporary password’ /var/log/mysqld.log

初始密码进入

mysql -uroot -p

设置root本地账户密码

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘your_password’

设置root远程账户密码以及权限

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘your_password’ WITH GRANT OPTION

更新权限表

flush privileges

配置防火墙

firewall-cmd –permanent –add-port=3306/tcp

firewall-cmd –reload

用链接工具测试 作者:heike07 https://www.bilibili.com/read/cv11699513 出处:bilibili

用链接工具测试

作者:heike07 https://www.bilibili.com/read/cv11699513 出处:bilibili

构建私有离线YUM源仓库(可扩展)

# 构建私有离线YUM源仓库(可扩展)

# 抛出一个问题,我现在要安装glances 需要几种方式呢?

# 为了保证节目效果,脚本采用一体成型,即写完脚本直接录制,思路即实验构建

# 遇到报错,现场解决!哈哈哈!沉浸式第一视角。

# Centos 7.9 2009



# 脚本文件也需要传送门!



# 方式一:

2、网络yum源的形式,直接从ustc 构建base 和epel的源

优点:方便快捷,一条命令即可安装,不用担心环境不一致。

缺点:需要网络。

具体看评论区第一条留言传送门

https://www.bilibili.com/video/BV1Uf4y1t7Pc?spm_id_from=333.999.0.0



# 方式二:

1、第二种方式,可以采用构建离线的RPM环境

优点:可以写成脚本安装,安装命令只有一条

缺点:需要完全一致的环境,且没有别的rpm包的情况

具体看评论区第一条留言传送门







# 方式三:

3、今天要讲的方式,从官网同步,然后自己做repo源

优点:方便快捷,可以离线,不需要环境一致,自适应。

缺点:需要一定的知识储备。



# 3.0

3.00 首先我们讲一下实验环境,mysql2 为 我们的yum源离线提供的机器

mysql1 为我们的客户机器。



# 3.1

3.1 首先确定ustc有没有我们要装的源,

发现在epel里有,那么我们就要把epel 下载下来。

https://mirrors.ustc.edu.cn/

3.1.2 把将本地的base 修改ustc 。



# 3.2

3.2 同步epel源

3.2.1 安装相关的软件包(有网的情况)

yum install  yum-utils createrepo httpd

启动httpd服务并测试!

# 注意,防火墙!! 端口设置,curl正常访问,跨机器需要防火墙开通端口,selinux

reposync -n --repoid=epel --repoid=epel -p /var/www/html/my_repo_server/

同步时间有点长,跳过一下时间。

3.2.2 进入到epel 构建repo 的元数据

 createrepo .



# 3.3

3.3 制作repo文件,用于构建私有离线yum仓库

vim my_repo_server.repo

[epel]

name=CentOS-$releasever - epel

baseurl=http://ip地址/my_repo_server/epel/

gpgcheck=0

enabled=1



# 3.4

3.4 测试安装glances 查看是否可以安装

3.4.1 通过http的方式下载到本地repo文件

cd /etc/yum.repos.d

rename repo repotmp *

curl http://192.168.116.129/my_repo_server.repo -O



3.4.2 yum建立缓存

yum makecache

3.4.3 安装glances



# 3.5

3.5.0

yum 回退

yum history list   列出通过Yum执行过的操作

yum history info 7   查看ID 7 的安装过程

yum history undo 7   卸载



3.5.1 同步

# ing

reposync -n --repoid=base --repoid=base -p /var/www/html/my_repo_server/

reposync -n --repoid=updates --repoid=updates -p /var/www/html/my_repo_server/

reposync -n --repoid=extras --repoid=extras -p /var/www/html/my_repo_server/



3.5.2 讲一下自定义节点以及后续扩展

[base]

name=CentOS-$releasever - Base

baseurl=http://ip地址/my_repo_server/base/

gpgcheck=0

enabled=1

[epel]

name=CentOS-$releasever - epel

baseurl=http://ip地址/my_repo_server/epel/

gpgcheck=0

enabled=1

[updates]

name=CentOS-$releasever - Updates

baseurl=http://ip地址/my_repo_server/updates/

gpgcheck=0

enabled=1

[extras]

name=CentOS-$releasever - Extras

baseurl=http://ip地址/my_repo_server/extras/

gpgcheck=0

enabled=1



# 3.6

3.6 讲一个zabbix的ustc的源(自定义的源)

https://repo.zabbix.com/zabbix/

3.6.1 查看zabbix的源位置

3.6.2 下载下来

 rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm

3.6.3 同步我们的源,为什么用zabbix 只是因为包少

 reposync -n --repoid=zabbix -p /var/www/html/my_repo_server/

3.6.4 构建repo文件

3.6.5 在clinet客户端 更新我们的repo文件

3.6.6 尝试安装zabbix-agent 安装成功,只是为了演示自定义源,其他不做过多展示。



# 3.7

3.7 总结

1. 我们做一个离线的私有的可以自定义的yum源,扩展的。

2. base epel  自定义 zabbix-agent

3. http selinux firewall ss



heike07 B站~



运维!要求会的东西比较多,你会的越多 你的思路就会越开放,可能别人解决问题时间比你要长。 作者:heike07 https://www.bilibili.com/read/cv15352515 出处:bilibili