读许倬云《现代文明的成坏》有感

在本书的最后一章,许倬云收录了自己写的一首短歌—《读北岛-青灯—有感》,其中末段他写道:

无穷折射中,
你我他,
今夕与未来,
不需分辨,
都融入N纬度的无限。
芥籽中见须弥,
刹那便是永恒——
人间在我,我在人间

他认为基督教式微后,作为人与神之间纽带的理性,徒留了“实用”这一点点的作用。儒教则自古“以人为本”,但在西方文明的冲击下,已然体无完肤。

随着科技在经济生活中的重要性与日俱增,重拾文明建设的要点,就要依托现代科技了。

科技把人与人之间的关系,重塑为一张大网,个人与这张大网形成合力,探索宇宙以发生联系。通过这一过程,让人与神再次链接起来,形成超越的价值,天人合一。

科技+儒教,从此相得益彰。

kubelet and kubectl

Kubelet and kubectl are two essential components of the Kubernetes ecosystem, each serving distinct but interconnected roles.

Kubelet:

  • Definition:

    • Kubelet is an agent that runs on each node in a Kubernetes cluster. Its primary responsibility is to ensure that the containers running on the node are in the desired state, as defined by the Kubernetes control plane.
  • Key Functions:

    • Pod Lifecycle Management: Kubelet is responsible for starting, stopping, and maintaining the lifecycle of pods on its node. It communicates with the container runtime (e.g., Docker, containerd) to create and manage containers within pods.
    • Health Checks: Kubelet regularly performs health checks on the containers it manages. If a container or pod is not healthy, Kubelet can take corrective actions, such as restarting the container.
    • Resource Management: Kubelet ensures that containers have access to the necessary resources (CPU, memory) as specified in pod resource requests and limits.
    • Image Management: Kubelet pulls container images as needed and ensures they are available for pod instantiation.
    • Node Status: Kubelet reports the node’s status and resource usage to the Kubernetes control plane.

kubectl:

  • Definition:

    • kubectl (Kube Control) is the command-line tool used to interact with a Kubernetes cluster. It serves as the primary interface for administrators, developers, and operators to manage and control the cluster.
  • Key Functions:

    • Cluster Management: kubectl allows you to create, update, and delete Kubernetes resources like pods, services, deployments, and config maps.
    • Resource Inspection: You can use kubectl to inspect the status and details of resources in the cluster, e.g., kubectl get pods, kubectl describe service.
    • Scaling: kubectl enables you to scale deployments or replica sets up or down, e.g., kubectl scale deployment my-app –replicas=3.
    • Resource Creation: You can create resources from YAML or JSON files using kubectl apply -f <file.yaml>.
    • Pod Execution: You can execute commands inside pods using kubectl exec, access logs with kubectl logs, and copy files in and out of pods with kubectl cp.
    • Interactivity: kubectl offers an interactive mode, where you can run a shell in a container using kubectl exec -it.

In summary, Kubelet is an agent running on each node that takes care of pod and container management on that node, while kubectl is the command-line tool used to manage and control the entire Kubernetes cluster from a centralized location. They work together to ensure that containerized workloads are orchestrated and maintained according to the desired configuration.

石康10月24日公众号文章

石康10月24日的公众号文章《印度智慧》一文,结尾他写到:

在历史的长河中,大家(指印度和其他国家)各走各路,各观各景,各抒各情,自享其福,自取其辱,冷暖自知,至死方休。
不过是种瓜得瓜,不足为奇。

问题是你要如何应对。
对世界,你微尘瞬间。
对个人,你一生一世。

flask的开发模式和生产模式(WSGI)

Flask容器化部署这篇文章介绍了一种利用WSGI技术,实现生产部署的方法。
WSGI介绍

我想了解flask run,下面是chatgpt的答复:

Flask is a micro web framework for Python that allows you to build web applications easily. When you use flask run to set up a web service, you are starting a development web server that comes bundled with Flask. This server is typically used for development and debugging purposes. It is not suitable for production use because it is single-threaded, not very robust, and not designed to handle a high volume of requests.

On the other hand, when you use a WSGI (Web Server Gateway Interface) server to deploy your Flask application, you are using a production-ready server to serve your application. WSGI is a standardized interface that allows web applications written in Python, like Flask, to be deployed on various web servers. When you deploy your Flask application with a WSGI server, such as Gunicorn, uWSGI, or mod_wsgi, you get a more robust and scalable web server setup that can handle concurrent requests and is better suited for production use.

Here are some key differences and considerations:

  1. Development vs. Production: flask run is intended for development and debugging, while WSGI servers are used in production environments.

  2. Scalability: WSGI servers can handle multiple concurrent requests and are suitable for scaling your application as traffic increases. Flask’s development server is not optimized for high concurrency.

  3. Reliability: WSGI servers are more reliable and have features like process management, worker processes, and failover mechanisms, making them better suited for handling production workloads.

  4. Deployment: When deploying your Flask application in a production environment, it’s recommended to use a WSGI server in conjunction with a reverse proxy server (like Nginx or Apache) for better performance, security, and load balancing.

In summary, while flask run is convenient for quickly testing your Flask application during development, it’s not suitable for production use. When deploying your Flask application for production, you should use a WSGI server for better performance, concurrency, and reliability.

在宿主机和容器里,分别查看ip地址

在mac上查看ip地址,比较方便的命令是

ifconfig en0 | grep inet

这条命令的解释如下

  1. Executes the "ifconfig" command to retrieve network configuration information for the "en0" network interface.
  2. Pipes (|) the output of the "ifconfig" command to the "grep inet" command.
  3. The "grep" command searches through the output and extracts any lines that contain the word "inet."

输出如下图

另外,也可以使用下面的命令查看ip地址,可以发现在宿主机和容器里,显示的ip地址是相同的。

# curl ifconfig.me
1.193.44.59#

宿主机

容器

解释如下

  • The command "curl ifconfig.me" is used to make an HTTP request to the ifconfig.me website, which is a service that provides your public IP address.

  • In the output you provided, "1.193.44.59" is the public IP address that was returned by the ifconfig.me service in response to your request. This is the public IP address that your device is using to communicate with the internet. It’s the address that other devices on the internet will see when they interact with your device.

  • Please note that public IP addresses can change, especially if you are using a dynamic IP assignment from your Internet Service Provider (ISP), so the IP address you see here may not be constant and could change over time.

在容器的bash环境里,输入hostname -i,显示当前容器对外暴露的ip地址

# hostname -i
XXX:XXXX:XXXa::d 192.168.194.13

这条命令解释如下

  • The command "hostname -i" is used to display the IP addresses associated with the current host or system. In the output you provided, you have two IP addresses listed:

    1. d07:b51a:cc66:a::d: This is an IPv6 address. IPv6 is the next-generation Internet Protocol designed to replace IPv4 due to the exhaustion of available IPv4 addresses.
    2. 192.168.194.13: This is an IPv4 address. IPv4 is the older and more widely used version of the Internet Protocol.
  • The output shows that your system has both an IPv6 and an IPv4 address associated with it. These addresses can be used for communication with other devices on a network, with IPv6 being used to support the transition to a more extensive address space as IPv4 addresses become scarcer.

查看docker 容器状态

有时候需要查看宿主机上的docker服务状态,以及哪些容器在运行或情况如何

查看docker服务状态

systemctl is-active docker

systemctl status docker

systemctl status [service name]命令会持续、实时显示相关服务的状态信息,如果要退出systemctl status状态回到提示符,可以:

Press Q: You can simply press the "Q" key on your keyboard to quit the "systemctl status" display. This will return you to the command line.

Press Ctrl + C: You can also press "Ctrl" and "C" simultaneously to send an interrupt signal to the "systemctl status" command, which will exit it and return you to the command line.

查看运行的容器状态

docker ps

查看所有容器状态

docker ps -a

重新启动k8s模拟器-minikube

节后上班第一天,发现阿里云上的minikube无法启动:

发现是没有切换到普通账号

su xxx到普通用户,重新启动minikube即可

如果要切换到root用户,输入多条命令,可以使用

sudo -i

The sudo -i command in Linux is used to open a new shell session with superuser privileges, also known as the root user. Here’s what it does:

sudo: This command is used to execute another command with superuser (or root) privileges, assuming the user running the sudo command has the necessary permissions. It’s often used to perform administrative tasks without needing to log in as the root user.

-i: This option, when used with sudo, opens a new shell session as the root user. It stands for "interactive" and is typically used when you need to perform multiple commands as the root user in an interactive shell. An interactive shell allows you to work as if you were logged in directly as the root user, with access to the root user’s environment and settings.