因为k8s打算在v1.20后弃用docker(指容器运行时,而非docker容器),故打算采纳containerd作为容器运行时。
一、装置containerd和crictl
1.1 名词解释
runc:依据OCI标准来生成和运行容器的命令行工具。
containerd:容器运行时
crictl:k8s的命令行工具
1.2 装置步骤
# 1. 装置 runccurl -OL https://github.com/opencontainers/runc/releases/download/v1.0.0-rc92/runc.amd64mv runc.amd64 /usr/local/bin/runc && chmod +x /usr/local/bin/runc# 2. 装置 containerdcurl -OL https://github.com/containerd/containerd/releases/download/v1.4.3/containerd-1.4.3-linux-amd64.tar.gztar -zxvf containerd-1.4.3-linux-amd64.tar.gz -C /usr/localcurl -o /etc/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/cri/master/contrib/systemd-units/containerd.service# 3. 配置 containerdmkdir -p /etc/containerdcat > /etc/containerd/config.toml << EOF[plugins] [plugins."io.containerd.grpc.v1.cri"] sandbox_image = "kubesphere/pause:3.2" [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://registry-1.docker.io"] ## 这里可替换成dockerhub的镜像加速器EOFsystemctl enable containerd && systemctl restart containerd# 4. 装置 crictlVERSION="v1.19.0"curl -OL https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gzsudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/binrm -f crictl-$VERSION-linux-amd64.tar.gz# 5. 配置crictlcat > /etc/crictl.yaml << EOFruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 2debug: falsepull-image-on-create: falseEOF
二、部署k8s和kubesphere
# 1. 下载kubekey## 这里临时应用kubekey v1.1.0-alpha.1部署kubernetes集群,该版本为预览版,反对多container-runtime也会蕴含在后续的正式版本中。curl -OL https://github.com/kubesphere/kubekey/releases/download/v1.1.0-alpha.1/kubekey-v1.1.0-alpha.1-linux-amd64.tar.gztar -zxvf kubekey-v1.1.0-alpha.1-linux-amd64.tar.gz# 2. 创立配置文件 ./kk create config # 默认在同级目录下生成 config-sample.yaml # 3. 依据实在环境信息批改配置文件vi config-sample.yaml apiVersion: kubekey.kubesphere.io/v1alpha1kind: Clustermetadata: name: samplespec: hosts: - {name: node1, address: 192.168.6.3, internalAddress: 192.168.6.3, password: xxx} - {name: node2, address: 192.168.6.4, internalAddress: 192.168.6.4, password: xxx} roleGroups: etcd: - node1 master: - node1 worker: - node1 - node2 controlPlaneEndpoint: domain: lb.kubesphere.local address: "" port: 6443 kubernetes: version: v1.17.9 imageRepo: kubesphere clusterName: cluster.local containerManager: containerd ## 这里填入之前部署的container-runtime:containerd / crio / isula network: plugin: calico kubePodsCIDR: 10.233.64.0/18 kubeServiceCIDR: 10.233.0.0/18 registry: registryMirrors: [] insecureRegistries: [] addons: []# 4. 部署集群./kk create cluster -f config-sample.yaml --with-kubesphere# 5. 期待集群部署实现
注:kubesphere默认账号密码是admin/P@88w0rd
参考链接:https://kubesphere.com.cn/for...