Integrated deployment of containerd and kubernetes
Deployment environment # operating system: CentOS Linux release 7.6.1810 (Core) # kubelet version: v1.14." containerd version: 1.3." crictl version: v1.16." cni version: v0.8." working directory: / apps/k8s# binaries directory: / usr/local/bin/# cni directory: / apps/cni prepares required binaries wget https://github.com/kubernetes- Sigs/cri-tools/releases/download/v1.16.1/crictl-v1.16.1-linux-amd64.tar.gzwget https://github.com/containerd/containerd/releases/download/v1.3.0/containerd-1.3.0.linux-amd64.tar.gzwget https://github.com/containernetworking/plugins/releases/download/v0.8.2/cni-plugins-linux-amd64-v0.8.2.tgz unzips the download file to the appropriate directory tar-xvf Containerd-1.3.0.linux-amd64.tar.gzmv bin/* / usr/local/bin/tar-xvf crictl-v1.16.1-linux-amd64.tar.gzmv crictl / usr/local/bin/# cni extract mkdir-p / apps/cni/bin/tar-xvf cni-plugins-linux-amd64-v0.8.2.tgz-C / apps/cni/bin/ prepare configuration file # containerd configuration file prepare mkdir-p / apps/k8s/etc/containerdvi / apps [plugins.opt] path = "/ apps/k8s/containerd" [plugins.cri] stream_server_address = "127.0.0.1" stream_server_port = "10010" sandbox_image = "docker.io/juestnow/pause-amd64:3.1" max_concurrent_downloads = 20 [plugins.cri.containerd] snapshotter = "overlayfs" [plugins.cri.containerd.default_runtime] runtime_type = "io.containerd.runtime.v1.linux" runtime_engine = "" runtime_root = "" [plugins.cri.containerd.untrusted_workload_runtime] runtime_type = "" Runtime_engine = "" runtime_root = "" [plugins.cri.cni] bin_dir = "/ apps/cni/bin" conf_dir = "/ etc/cni/net.d" [plugins. "io.containerd.runtime.v1.linux"] shim = "containerd-shim" runtime = "runc" runtime_root = "" no_shim = false shim_debug = false [plugins. "io.containerd.runtime.v2.task"] platforms = [ "linux/amd64"]-# crictl configuration file prepares vim / etc/crictl.yaml-- -- runtime-endpoint: unix:///run/k8s/containerd/containerd.sock image-endpoint: unix:///run/k8s/containerd/containerd.sock timeout: 10 debug: false prepares the containerd startup file because the docker containerd.service file already exists because it was previously installed To ensure the normal operation of docker, the newly installed containerdk8svim / usr/lib/systemd/system/containerdk8s.service---- [Unit] Description=Lightweight KubernetesDocumentation= https://containerd.ioAfter=network-online is modified. .target [service] ExecStartPre=-/sbin/modprobe br_netfilterExecStartPre=-/sbin/modprobe overlayExecStartPre=-/bin/mkdir-p / run/k8s/containerdExecStart=/usr/local/bin/containerd\-c / apps/k8s/etc/containerd/config.toml\-a / run/k8s/containerd/containerd.sock\-- state / apps/k8s/run/containerd\-- root / apps/k8s/containerd KillMode=processDelegate=yesOOMScoreAdjust=-999LimitNOFILE=1024000 # decision capacity The number of files opened in the device can be set here to set LimitNPROC=1024000LimitCORE=infinityTasksMax=infinityTimeoutStartSec=0Restart=alwaysRestartSec= 5s [install] WantedBy=multi-user.target to start containerdsystemctl start containerdk8s.service settings to boot systemctl enable containerdk8s.service to verify whether the containerd deployment is normal crictl ps-acrictl imagescrictl pull busybox: 1.25.0 [root @ ingress-01 tmp] # crictl pull busybox:1.25.0crictl pull busybox:1.25.0Image is up to date for busybox@sha256:a59906e33509d14c036c8678d687bd4eec81ed7c4b8ce907b888c607f6a1e0e6# successfully pulled the container kubelet configuration file to support containerdvim / apps/ Kubernetes/conf/kubelet- -KUBELET_OPTS= "- bootstrap-kubeconfig=/apps/kubernetes/conf/bootstrap.kubeconfig\-- fail-swap-on=false\-- network-plugin=cni-- cni-conf-dir=/etc/cni/net.d-- cni-bin-dir=/apps/cni/bin\-- kubeconfig=/apps/kubernetes/conf/kubelet.kubeconfig\-- address=192.168.30 .36\-node-ip=192.168.30.36\-hostname-override=ingress-01\-cluster-dns=10.64.0.2\-cluster-domain=cluster.local\-authorization-mode=Webhook\-authentication-token-webhook=true\-client-ca-file=/apps/kubernetes/ssl/ K8s/k8s-ca.pem\-rotate-certificates=true\-cgroup-driver=cgroupfs\-allow-privileged=true\-healthz-port=10248\-healthz-bind-address=192.168.30.36\-cert-dir=/apps/kubernetes/ssl\-feature-gates=RotateKubeletClientCertificate=true RotateKubeletServerCertificate=true\-node-labels=node-role.kubernetes.io/k8s-ingress=true\-serialize-image-pulls=false\-enforce-node-allocatable=pods,kube-reserved System-reserved\-pod-manifest-path=/apps/work/kubernetes/manifests\-runtime-cgroups=/systemd/system.slice/kubelet.service\-kube-reserved-cgroup=/systemd/system.slice/kubelet.service\-system-reserved-cgroup=/systemd/system.slice\-root-dir=/apps/work/kubernetes/kubelet\ -- log-dir=/apps/kubernetes/log\-- alsologtostderr=true\-- logtostderr=false\-anonymous-auth=true\-- container-log-max-files=10\-- container-log-max-size=100Mi\-- container-runtime=remote\-- container-runtime-endpoint=unix:///run/k8s/ Containerd/containerd.sock\-containerd=unix:///run/k8s/containerd/containerd.sock\-runtime-request-timeout=15m\-image-gc-high-threshold=70\-image-gc-low-threshold=50\-kube-reserved=cpu=500m Memory=512Mi,ephemeral-storage=1Gi\-system-reserved=cpu=1000m,memory=1024Mi,ephemeral-storage=1Gi\-eviction-hard=memory.available