代码拉取完成,页面将自动刷新
同步操作将从 gjmzj/kubeasz 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
kube-node
是集群中运行工作负载的节点,前置条件需要先部署好kube-master
节点,它需要部署如下组件:
roles/kube-node/
├── defaults
│ └── main.yml # 变量配置文件
├── tasks
│ ├── main.yml # 主执行文件
│ ├── node_lb.yml # haproxy 安装文件
│ └── offline.yml # 离线安装 haproxy
└── templates
├── cni-default.conf.j2 # 默认cni插件配置模板
├── haproxy.cfg.j2 # haproxy 配置模板
├── haproxy.service.j2 # haproxy 服务模板
├── kubelet-config.yaml.j2 # kubelet 独立配置文件
├── kubelet-csr.json.j2 # 证书请求模板
├── kubelet.service.j2 # kubelet 服务模板
└── kube-proxy.service.j2 # kube-proxy 服务模板
请在另外窗口打开roles/kube-node/tasks/main.yml
文件,对照看以下讲解内容。
详见 roles/kube-node/defaults/main.yml,举例以下3个变量配置说明
PROXY_MODE
,配置 kube-proxy 服务代理模式 iptables or ipvsKUBE_APISERVER
,根据不同的节点情况,它有三种取值方式MASTER_CHG
,变更 master 节点时会根据它来重新配置 haproxy因为后续需要用 DaemonSet Pod
方式运行k8s网络插件,所以kubelet.server服务必须开启cni相关参数,并且提供cni网络配置文件
/var/lib/kubelet
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
WorkingDirectory=/var/lib/kubelet
{% if KUBE_RESERVED_ENABLED == "yes" or SYS_RESERVED_ENABLED == "yes" %}
ExecStartPre=/bin/mount -o remount,rw '/sys/fs/cgroup'
ExecStartPre=/bin/mkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.service
ExecStartPre=/bin/mkdir -p /sys/fs/cgroup/hugetlb/system.slice/kubelet.service
ExecStartPre=/bin/mkdir -p /sys/fs/cgroup/memory/system.slice/kubelet.service
ExecStartPre=/bin/mkdir -p /sys/fs/cgroup/pids/system.slice/kubelet.service
{% endif %}
ExecStart={{ bin_dir }}/kubelet \
--config=/var/lib/kubelet/config.yaml \
{% if KUBE_VER|float < 1.13 %}
--allow-privileged=true \
{% endif %}
--cni-bin-dir={{ bin_dir }} \
--cni-conf-dir=/etc/cni/net.d \
{% if CONTAINER_RUNTIME == "containerd" %}
--container-runtime=remote \
--container-runtime-endpoint=unix:///run/containerd/containerd.sock \
{% endif %}
--hostname-override={{ inventory_hostname }} \
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig \
--network-plugin=cni \
--pod-infra-container-image={{ SANDBOX_IMAGE }} \
--root-dir={{ KUBELET_ROOT_DIR }} \
--v=2
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
基础容器
(负责创建Pod 内部共享的网络、文件系统等)镜像,K8S每一个运行的 POD里面必然包含这个基础容器,如果它没有运行起来那么你的POD 肯定创建不了,kubelet日志里面会看到类似 FailedCreatePodSandBox
错误,可用docker images
查看节点是否已经下载到该镜像该步骤已经在 deploy节点完成,roles/deploy/tasks/main.yml
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
WorkingDirectory=/var/lib/kube-proxy
ExecStart={{ bin_dir }}/kube-proxy \
--bind-address={{ inventory_hostname }} \
--cluster-cidr={{ CLUSTER_CIDR }} \
--hostname-override={{ inventory_hostname }} \
--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig \
--logtostderr=true \
--v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
systemctl status kubelet # 查看状态
systemctl status kube-proxy
journalctl -u kubelet # 查看日志
journalctl -u kube-proxy
运行 kubectl get node
可以看到类似
NAME STATUS ROLES AGE VERSION
192.168.1.42 Ready <none> 2d v1.9.0
192.168.1.43 Ready <none> 2d v1.9.0
192.168.1.44 Ready <none> 2d v1.9.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。