kubernetes pod 初始化

https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/

有时候,在容器启动时我们需要做一些预备工作。

举个例子:

现启动了一个nginx pod, 且挂载了 rbd 作为web根目录存储。单RBD默认是以 root 挂载的(迄今为止rbd还没有挂载指定user的配置),这就需要我们在容器初始化时为目录赋予正确的权限。

可以定义如下配置:

apiVersion: v1
kind: Pod
metadata:
  name: aaa
spec:
  containers:
  - image: nginx:latest
    imagePullPolicy: IfNotPresent
    name: nginx
    volumeMounts:
    - name: aaa
      mountPath: /usr/share/nginx/html
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "chown -R nginx:nginx /usr/share/nginx/html"]
  volumes:
    - name: aaa
      persistentVolumeClaim:
        claimName: aaa

进入容器查看:

[root@walker-1 aaaaa]# kubectl exec -it aaa sh
# ls -l /usr/share/nginx
total 4
drwxr-xr-x 3 nginx nginx 4096 Nov  9 05:57 html
# mount | grep nginx
/dev/rbd1 on /usr/share/nginx/html type ext4 (rw,relatime,stripe=1024,data=ordered)

此外还有一种pod初始化方式,通过 init-container

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-initialization/

官方给出了示例。另外在 mysql statefulset scaling 中也用到了ini-container 来进行db初始化。

### 初始化Kubernetes主节点 为了成功初始化Kubernetes主节点,在CentOS 7环境中需遵循一系列特定操作[^1]。 #### 准备工作 确保操作系统已更新至最新状态并安装必要的依赖项。对于Docker版本的选择至关重要,过新的Docker版本可能会引发兼容性问题从而阻止集群正常初始化[^2]。 #### 安装kubeadm、kubelet和kubectl 通过官方文档指导完成这三个组件的安装。这些工具分别用于设置集群、管理节点以及与API服务器交互。 ```bash sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes ``` #### 配置网络策略插件 在执行`kubeadm init`命令之前,应先部署合适的容器网络接口(CNI),比如Calico或Flannel等。这一步骤决定了Pod间的通信方式。 #### 执行kubeadm init 当一切准备就绪后,可以运行如下命令来启动主节点初始化过程: ```bash sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 上述命令中的CIDR参数取决于所选CNI的要求;这里以Flannel为例设置了默认值。如果遇到连接被拒绝(`connection refused`)的情况,则可能是由于端口未开放或是防火墙规则阻碍了访问[^3]。 #### 加入其他节点到集群 一旦主节点建立完毕,可利用输出的日志信息中给出的指令让worker节点加入进来。通常形式如下所示: ```bash kubect join <master-ip>:<master-port> --token <token-value> ``` 需要注意的是,某些情况下即使显示“node 'k8s-master' not found”,也不必过分担心,因为这只是暂时现象,并不影响后续步骤继续进行。 #### 启动控制平面服务监听外部请求 最后要确认所有必需的服务都在正确地监听相应的TCP端口(如表一所列)[^4],特别是API Server使用的6443/tcp端口是否畅通无阻。 | 组件 | 端口号(TCP) | | --- | --- | | API Server | 6443/tcp | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值