{"id":160,"date":"2026-01-23T01:19:16","date_gmt":"2026-01-23T01:19:16","guid":{"rendered":"https:\/\/blog.gpst.net.cn:4008\/?p=160"},"modified":"2026-01-28T06:24:15","modified_gmt":"2026-01-28T06:24:15","slug":"centos-8%e6%90%ad%e5%bb%bakubernetes-k8s%e9%9b%86%e7%be%a4-1-19-0","status":"publish","type":"post","link":"https:\/\/opshub.com.cn\/?p=160","title":{"rendered":"CentOS 8\u642d\u5efaKubernetes-k8s\u96c6\u7fa4-1.19.0"},"content":{"rendered":"\n<p>\u4e00\u3001Master\u8282\u70b9\u3001Node\u8282\u70b9\u51c6\u5907\u5de5\u4f5c<\/p>\n\n\n\n<p>1.\u5173\u95edfirewalld\u3001selinux<\/p>\n\n\n\n<p>systemctl stop firewalld<\/p>\n\n\n\n<p>systemctl disable firewalld<\/p>\n\n\n\n<p>setenforce 0<\/p>\n\n\n\n<p>sed -i &#8216;s\/^SELINUX=.*\/SELINUX=disabled\/&#8217; \/etc\/selinux\/config<\/p>\n\n\n\n<p>2.\u8bbe\u7f6e\u7cfb\u7edf\u65f6\u533a\uff0c\u540c\u6b65\u7cfb\u7edf\u65f6\u95f4<\/p>\n\n\n\n<p>timedatectl set-timezone Asia\/Shanghai<\/p>\n\n\n\n<p>systemctl enable &#8211;now chronyd<\/p>\n\n\n\n<p>chronyc makestep<\/p>\n\n\n\n<p>3.\u914d\u7f6e\u4e3b\u673a\u4e92\u4fe1<\/p>\n\n\n\n<p>ssh-keygen<\/p>\n\n\n\n<p>ssh-copy-id<\/p>\n\n\n\n<p>\u4e8c\u3001\u7981\u7528swap<\/p>\n\n\n\n<p>swapoff -a<\/p>\n\n\n\n<p>sed -i &#8216;\/swap\/s\/^\/#\/g&#8217; \/etc\/fstab<\/p>\n\n\n\n<p>\u4e09\u3001\u90e8\u7f72docker<\/p>\n\n\n\n<p>yum install -y yum-utils device-mapper-persistent-data lvm2<\/p>\n\n\n\n<p>yum-config-manager &#8211;add-repo<a href=\"http:\/\/mirrors.aliyun.com\/docker-ce\/linux\/centos\/docker-ce.repo\">http:\/\/mirrors.aliyun.com\/docker-ce\/linux\/centos\/docker-ce.repo<\/a><\/p>\n\n\n\n<p>yum list docker-ce &#8211;showduplicates | sort -r|tail -1<\/p>\n\n\n\n<p>yum install docker-ce-19.03.13-3.el8 docker-ce-cli-19.03.13-3.el8 containerd.io<\/p>\n\n\n\n<p>systemctlenable &#8211;nowdocker<\/p>\n\n\n\n<p>docker info<\/p>\n\n\n\n<p>curl -L &#8220;<a href=\"https:\/\/github.com\/docker\/compose\/releases\/download\/1.29.2\/docker-compose-$(uname%20-s)-$(uname%20-m)\">https:\/\/github.com\/docker\/compose\/releases\/download\/1.29.2\/docker-compose-$(uname -s)-$(uname -m)<\/a>&#8221; -o \/usr\/local\/bin\/docker-compose<\/p>\n\n\n\n<p>chmod +x \/usr\/local\/bin\/docker-compose<\/p>\n\n\n\n<p>ln -s \/usr\/local\/bin\/docker-compose \/usr\/bin\/docker-compose<\/p>\n\n\n\n<p>docker-compose &#8211;version<\/p>\n\n\n\n<p>\u56db\u3001\u914d\u7f6e\u5bb9\u5668\u8fd0\u884c\u65f6<\/p>\n\n\n\n<p>\u8fd0\u884c\u65f6\uff1a\u4e3a\u4e86\u5728 Pod \u4e2d\u8fd0\u884c\u5bb9\u5668\uff0cKubernetes \u4f7f\u7528 \u5bb9\u5668\u8fd0\u884c\u65f6\uff08Container Runtime\uff09\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cKubernetes \u4f7f\u7528 \u5bb9\u5668\u8fd0\u884c\u65f6\u63a5\u53e3\uff08Container Runtime Interface\uff0cCRI\uff09 \u6765\u4e0e\u4f60\u6240\u9009\u62e9\u7684\u5bb9\u5668\u8fd0\u884c\u65f6\u4ea4\u4e92\u3002\u9700\u8981\u5728\u96c6\u7fa4\u5185\u6bcf\u4e2a\u8282\u70b9\u4e0a\u5b89\u88c5\u4e00\u4e2a \u5bb9\u5668\u8fd0\u884c\u65f6 \u4ee5\u4f7f Pod \u53ef\u4ee5\u8fd0\u884c\u5728\u4e0a\u9762\uff0c\u5982\u679c\u540c\u65f6\u68c0\u6d4b\u5230 Docker \u548c containerd\uff0c\u5219\u4f18\u5148\u9009\u62e9 Docker\u3002<\/p>\n\n\n\n<p>\u914d\u7f6e\u7684\u5148\u51b3\u6761\u4ef6\uff1a<\/p>\n\n\n\n<p>cat &lt;&lt;EOF | tee \/etc\/modules-load.d\/docker.conf<\/p>\n\n\n\n<p>overlay<\/p>\n\n\n\n<p>br_netfilter<\/p>\n\n\n\n<p>EOF<\/p>\n\n\n\n<p>modprobe overlay<\/p>\n\n\n\n<p>modprobe br_netfilter<\/p>\n\n\n\n<p># \u8bbe\u7f6e\u5fc5\u9700\u7684 sysctl \u53c2\u6570\uff0c\u8fd9\u4e9b\u53c2\u6570\u5728\u91cd\u65b0\u542f\u52a8\u540e\u4ecd\u7136\u5b58\u5728\u3002<\/p>\n\n\n\n<p>cat &lt;&lt;EOF | sudo tee \/etc\/sysctl.d\/99-kubernetes-cri.conf<\/p>\n\n\n\n<p>net.bridge.bridge-nf-call-iptables&nbsp;= 1<\/p>\n\n\n\n<p>net.ipv4.ip_forward&nbsp;= 1<\/p>\n\n\n\n<p>net.bridge.bridge-nf-call-ip6tables = 1<\/p>\n\n\n\n<p>EOF<\/p>\n\n\n\n<p># \u5e94\u7528 sysctl \u53c2\u6570\u800c\u65e0\u9700\u91cd\u65b0\u542f\u52a8<\/p>\n\n\n\n<p>sudo sysctl &#8211;system<\/p>\n\n\n\n<p>\u4e94\u3001\u914d\u7f6e Docker \u5b88\u62a4\u7a0b\u5e8f\uff0c\u5c24\u5176\u662f\u4f7f\u7528 systemd \u6765\u7ba1\u7406\u5bb9\u5668\u7684 cgroup\uff0c<\/p>\n\n\n\n<p>\uff08Cgroup \u9a71\u52a8\u7a0b\u5e8f\uff1a\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cCRI-O \u4f7f\u7528 systemd cgroup \u9a71\u52a8\u7a0b\u5e8f\uff0c\u63a7\u5236\u7ec4\u7528\u6765\u7ea6\u675f\u5206\u914d\u7ed9\u8fdb\u7a0b\u7684\u8d44\u6e90\uff09\u3002<\/p>\n\n\n\n<p>mkdir \/etc\/docker<\/p>\n\n\n\n<p>cat &lt;&lt;EOF |tee\/etc\/docker\/daemon.json<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp;&#8220;exec-opts&#8221;: [&#8220;<strong><em>native.cgroupdriver=systemd<\/em><\/strong>&#8220;],<\/p>\n\n\n\n<p>&nbsp;&#8220;log-driver&#8221;: &#8220;json-file&#8221;,<\/p>\n\n\n\n<p>&nbsp;&#8220;log-opts&#8221;: {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;max-size&#8221;: &#8220;100m&#8221;<\/p>\n\n\n\n<p>&nbsp;},<\/p>\n\n\n\n<p>&nbsp;&#8220;storage-driver&#8221;: &#8220;<strong><em>overlay2<\/em><\/strong>&#8220;,<\/p>\n\n\n\n<p>&nbsp;&#8220;storage-opts&#8221;: [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;overlay2.override_kernel_check=true&#8221;<\/p>\n\n\n\n<p>&nbsp;],<\/p>\n\n\n\n<p>&nbsp;&#8220;registry-mirrors&#8221;: [&#8220;<a href=\"https:\/\/7uuu3esz.mirror.aliyuncs.com\/\">https:\/\/7uuu3esz.mirror.aliyuncs.com<\/a>&#8220;],<\/p>\n\n\n\n<p>&nbsp;&#8220;insecure-registries&#8221; : [&#8220;<a href=\"http:\/\/myregistrydomain.com:5000\/\">myregistrydomain.com:5000<\/a>&#8220;]<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>EOF<\/p>\n\n\n\n<p>systemctl daemon-reload<\/p>\n\n\n\n<p>systemctl restart docker<\/p>\n\n\n\n<p>#\u5bf9\u4e8e\u8fd0\u884c Linux \u5185\u6838\u7248\u672c 4.0 \u6216\u66f4\u9ad8\u7248\u672c\uff0c\u6216\u4f7f\u7528 3.10.0-51 \u53ca\u66f4\u9ad8\u7248\u672c\u7684 RHEL \u6216 CentOS \u7684\u7cfb\u7edf\uff0coverlay2\u662f\u9996\u9009\u7684\u5b58\u50a8\u9a71\u52a8\u7a0b\u5e8f\u3002<\/p>\n\n\n\n<p>\u516d\u3001\u5b89\u88c5 kubeadm\u3001kubelet \u548c kubectl<\/p>\n\n\n\n<p>\u9700\u8981\u5728\u6bcf\u53f0\u673a\u5668\u4e0a\u5b89\u88c5\u4ee5\u4e0b\u7684\u8f6f\u4ef6\u5305\uff1a<\/p>\n\n\n\n<p>kubeadm\uff1a\u7528\u6765\u521d\u59cb\u5316\u96c6\u7fa4\u7684\u6307\u4ee4\u3002<\/p>\n\n\n\n<p>kubelet\uff1a\u5728\u96c6\u7fa4\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u4e0a\u7528\u6765\u542f\u52a8 Pod \u548c\u5bb9\u5668\u7b49\u3002<\/p>\n\n\n\n<p>kubectl\uff1a\u7528\u6765\u4e0e\u96c6\u7fa4\u901a\u4fe1\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002<\/p>\n\n\n\n<p>cat &lt;&lt;EOF | tee \/etc\/yum.repos.d\/kubernetes.repo<\/p>\n\n\n\n<p>[kubernetes]<\/p>\n\n\n\n<p>name=Kubernetes<\/p>\n\n\n\n<p>baseurl=<a href=\"https:\/\/mirrors.aliyun.com\/kubernetes\/yum\/repos\/kubernetes-el7-x86_64\/\">https:\/\/mirrors.aliyun.com\/kubernetes\/yum\/repos\/kubernetes-el7-x86_64\/<\/a><\/p>\n\n\n\n<p>enable=1<\/p>\n\n\n\n<p>gpgcheck=0<\/p>\n\n\n\n<p>exclude=kubelet kubeadm kubectl<\/p>\n\n\n\n<p>EOF<\/p>\n\n\n\n<p>yum -y install kubeadm-1.19.0 kubectl-1.19.0 kubelet-1.19.0 &#8211;disableexcludes=kubernetes<\/p>\n\n\n\n<p>systemctl enable &#8211;now kubelet<\/p>\n\n\n\n<p>kubelet \u73b0\u5728\u6bcf\u9694\u51e0\u79d2\u5c31\u4f1a\u91cd\u542f\uff0c\u56e0\u4e3a\u5b83\u9677\u5165\u4e86\u4e00\u4e2a\u7b49\u5f85 kubeadm \u6307\u4ee4\u7684\u6b7b\u5faa\u73af\u3002<\/p>\n\n\n\n<p>\u4e03\u3001\u914d\u7f6e\u81ea\u52a8\u8865\u5168\u547d\u4ee4<\/p>\n\n\n\n<p># \u5b89\u88c5bash\u81ea\u52a8\u8865\u5168\u63d2\u4ef6<\/p>\n\n\n\n<p>yum install bash-completion -y<\/p>\n\n\n\n<p># \u8bbe\u7f6ekubectl\u4e0ekubeadm\u547d\u4ee4\u8865\u5168\uff0c\u4e0b\u6b21login\u751f\u6548<\/p>\n\n\n\n<p>kubectl completion bash &gt;\/etc\/bash_completion.d\/kubectl<\/p>\n\n\n\n<p>kubeadm completion bash &gt; \/etc\/bash_completion.d\/kubeadm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p>\u516b\u3001\u9884\u62c9\u53d6kubernetes\u955c\u50cf<\/p>\n\n\n\n<p>\u7531\u4e8e\u56fd\u5185\u7f51\u7edc\u56e0\u7d20\uff0ckubernetes\u955c\u50cf\u9700\u8981\u4ecemirrors\u7ad9\u70b9\u6216\u901a\u8fc7dockerhub\u7528\u6237\u63a8\u9001\u7684\u955c\u50cf\u62c9\u53d6\u3002<\/p>\n\n\n\n<p>kubeadm config images list &#8211;kubernetes-version v1.19.0<\/p>\n\n\n\n<p>\u811a\u672c\uff1apull.sh<\/p>\n\n\n\n<p>#!\/bin\/bash<\/p>\n\n\n\n<p># Script For Quick Pull K8S Docker Images<\/p>\n\n\n\n<p>KUBE_VERSION=v1.19.0<\/p>\n\n\n\n<p>PAUSE_VERSION=3.2<\/p>\n\n\n\n<p>CORE_DNS_VERSION=1.7.0<\/p>\n\n\n\n<p>ETCD_VERSION=3.4.9-1<\/p>\n\n\n\n<p># pull kubernetes images from <a href=\"http:\/\/hub.docker.com\/\">hub.docker.com<\/a><\/p>\n\n\n\n<p>docker pull kubeimage\/kube-proxy-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p>docker pull kubeimage\/kube-controller-manager-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p>docker pull kubeimage\/kube-apiserver-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p>docker pull kubeimage\/kube-scheduler-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p># pull aliyuncs mirror docker images<\/p>\n\n\n\n<p>docker pull <a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:$PAUSE_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:$PAUSE_VERSION<\/a><\/p>\n\n\n\n<p>docker pull <a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/coredns:$CORE_DNS_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/coredns:$CORE_DNS_VERSION<\/a><\/p>\n\n\n\n<p>docker pull <a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/etcd:$ETCD_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/etcd:$ETCD_VERSION<\/a><\/p>\n\n\n\n<p># retag to k8s.gcr.io prefix<\/p>\n\n\n\n<p>docker tag kubeimage\/kube-proxy-amd64:$KUBE_VERSION&nbsp;k8s.gcr.io\/kube-proxy:$KUBE_VERSION<\/p>\n\n\n\n<p>docker tag kubeimage\/kube-controller-manager-amd64:$KUBE_VERSION k8s.gcr.io\/kube-controller-manager:$KUBE_VERSION<\/p>\n\n\n\n<p>docker tag kubeimage\/kube-apiserver-amd64:$KUBE_VERSION k8s.gcr.io\/kube-apiserver:$KUBE_VERSION<\/p>\n\n\n\n<p>docker tag kubeimage\/kube-scheduler-amd64:$KUBE_VERSION k8s.gcr.io\/kube-scheduler:$KUBE_VERSION<\/p>\n\n\n\n<p>docker tag<a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:$PAUSE_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:$PAUSE_VERSION<\/a>k8s.gcr.io\/pause:$PAUSE_VERSION<\/p>\n\n\n\n<p>docker tag<a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/coredns:$CORE_DNS_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/coredns:$CORE_DNS_VERSION<\/a>k8s.gcr.io\/coredns:$CORE_DNS_VERSION<\/p>\n\n\n\n<p>docker tag<a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/etcd:$ETCD_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/etcd:$ETCD_VERSION<\/a>k8s.gcr.io\/etcd:$ETCD_VERSION<\/p>\n\n\n\n<p># untag origin tag, the images won&#8217;t be delete.<\/p>\n\n\n\n<p>docker rmi kubeimage\/kube-proxy-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p>docker rmi kubeimage\/kube-controller-manager-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p>docker rmi kubeimage\/kube-apiserver-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p>docker rmi kubeimage\/kube-scheduler-amd64:$KUBE_VERSION<\/p>\n\n\n\n<p>docker rmi <a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:$PAUSE_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:$PAUSE_VERSION<\/a><\/p>\n\n\n\n<p>docker rmi <a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/coredns:$CORE_DNS_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/coredns:$CORE_DNS_VERSION<\/a><\/p>\n\n\n\n<p>docker rmi <a href=\"http:\/\/registry.cn-hangzhou.aliyuncs.com\/google_containers\/etcd:$ETCD_VERSION\">registry.cn-hangzhou.aliyuncs.com\/google_containers\/etcd:$ETCD_VERSION<\/a><\/p>\n\n\n\n<p>\u6267\u884c\u811a\u672c\u540e\uff1a7\u4e2a\u955c\u50cf\uff1aproxy apiserver controller scheduler etcd dns pause<\/p>\n\n\n\n<p>[root@k8smaster ~]# docker images |grep &#8220;k8s.gcr.io&#8221;<\/p>\n\n\n\n<p>k8s.gcr.io\/kube-proxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1.19.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bc9c328f379c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10 months ago&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;118MB<\/p>\n\n\n\n<p>k8s.gcr.io\/kube-apiserver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1.19.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1b74e93ece2f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10 months ago&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;119MB<\/p>\n\n\n\n<p>k8s.gcr.io\/kube-controller-manager&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1.19.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;09d665d529d0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10 months ago&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;111MB<\/p>\n\n\n\n<p>k8s.gcr.io\/kube-scheduler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1.19.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cbdc8369d8b1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10 months ago&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;45.7MB<\/p>\n\n\n\n<p>k8s.gcr.io\/etcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.4.9-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d4ca8726196c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12 months ago&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;253MB<\/p>\n\n\n\n<p>k8s.gcr.io\/coredns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.7.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bfe3a36ebd25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12 months ago&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;45.2MB<\/p>\n\n\n\n<p>k8s.gcr.io\/pause&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80d28bedfe5d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17 months ago&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;683kB<\/p>\n\n\n\n<p>\u4e5d\u3001\u521d\u59cb\u5316k8s\u7684master\u8282\u70b9<\/p>\n\n\n\n<p># master\u8282\u70b9\u670d\u52a1\u5668\u6267\u884c<\/p>\n\n\n\n<p>kubeadm config print init-defaults&gt;init.yaml<\/p>\n\n\n\n<p>init.yaml\u5185\u5bb9\uff1a\u9700\u4fee\u6539\u9700\u589e\u52a0<\/p>\n\n\n\n<p>apiVersion: kubeadm.k8s.io\/v1beta2<\/p>\n\n\n\n<p>bootstrapTokens:<\/p>\n\n\n\n<p>&#8211; groups:<\/p>\n\n\n\n<p>&nbsp;&#8211; system:bootstrappers:kubeadm:default-node-token<\/p>\n\n\n\n<p>&nbsp;token: abcdef.0123456789abcdef<\/p>\n\n\n\n<p>&nbsp;ttl: 24h0m0s<\/p>\n\n\n\n<p>&nbsp;usages:<\/p>\n\n\n\n<p>&nbsp;&#8211; signing<\/p>\n\n\n\n<p>&nbsp;&#8211; authentication<\/p>\n\n\n\n<p>kind: InitConfiguration<\/p>\n\n\n\n<p>localAPIEndpoint:<\/p>\n\n\n\n<p>&nbsp;advertiseAddress:192.168.23.10<\/p>\n\n\n\n<p>&nbsp;bindPort: 6443<\/p>\n\n\n\n<p>nodeRegistration:<\/p>\n\n\n\n<p>&nbsp;criSocket: \/var\/run\/dockershim.sock<\/p>\n\n\n\n<p>&nbsp;name: node<\/p>\n\n\n\n<p>&nbsp;taints: null<\/p>\n\n\n\n<p>&#8212;<\/p>\n\n\n\n<p>apiServer:<\/p>\n\n\n\n<p>&nbsp;timeoutForControlPlane: 4m0s<\/p>\n\n\n\n<p>apiVersion: kubeadm.k8s.io\/v1beta2<\/p>\n\n\n\n<p>certificatesDir: \/etc\/kubernetes\/pki<\/p>\n\n\n\n<p>clusterName: kubernetes<\/p>\n\n\n\n<p>controllerManager: {}<\/p>\n\n\n\n<p>dns:<\/p>\n\n\n\n<p>&nbsp;type: CoreDNS<\/p>\n\n\n\n<p>etcd:<\/p>\n\n\n\n<p>&nbsp;local:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;dataDir: \/var\/lib\/etcd<\/p>\n\n\n\n<p>imageRepository: k8s.gcr.io<\/p>\n\n\n\n<p>kind: ClusterConfiguration<\/p>\n\n\n\n<p>kubernetesVersion:v1.19.0<\/p>\n\n\n\n<p>networking:<\/p>\n\n\n\n<p>&nbsp;dnsDomain: cluster.local<\/p>\n\n\n\n<p>&nbsp;serviceSubnet: 10.96.0.0\/12<\/p>\n\n\n\n<p>&nbsp;podSubnet:&#8221;10.244.0.0\/16&#8243;\uff08\u5185\u7f51\u67d0\u7f51\u6bb5\u7684\u5b50\u7f51\uff0c\u4f8b\u5982\u67d0\u7f51\u6bb5172.16.0.0\/16,\u5206\u5316\u51fa\u5b50\u7f51\uff1a172.16.1.0\/24\uff0c172.16.2.0\/24\u7b49\uff0c\u4fdd\u8bc1\u6bcf\u4e2anode\u8282\u70b9\u4e0apod\u5206\u914d\u7f51\u7edc\u5730\u5740\u7684\u65f6\u5019\u53ea\u80fd\u4ece\u8fd9\u4e2a\u5b50\u7f51\u8303\u56f4\u5185\u5206\u914d\uff0c\u907f\u514d\u4e86IP\u5730\u5740\u51b2\u7a81\uff09<\/p>\n\n\n\n<p>scheduler: {}<\/p>\n\n\n\n<p>kubeadm init phase preflight\uff08\u6d4b\u8bd5\uff09<\/p>\n\n\n\n<p>WARNING\u662f\u6b63\u5e38\u7684\u3002<\/p>\n\n\n\n<p>10.244.0.0\/16\uff08\u80fd\u4fee\u6539\uff1f\uff1f\uff09\u662fflannel\u56fa\u5b9a\u4f7f\u7528\u7684IP\u6bb5\uff0c\u8bbe\u7f6e\u53d6\u51b3\u4e8e\u7f51\u7edc\u7ec4\u4ef6\u8981\u6c42\u3002\u5bf9\u5e94\u4e86kube-flannel.yml\u4e2d\u4ee5\u4e0b\uff1a<\/p>\n\n\n\n<p>&nbsp;net-conf.json: |<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;{<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Network&#8221;:&#8221;10.244.0.0\/16&#8243;,&nbsp;\uff08\u80fd\u4fee\u6539\uff1f\uff1f\uff09<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Backend&#8221;: {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Type&#8221;: &#8220;vxlan&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>kubeadm init &#8211;pod-network-cidr=10.244.0.0\/16 &#8211;kubernetes-version=v1.19.0 |tee init.log<\/p>\n\n\n\n<p>init.log\u4fe1\u606f\u6709\u7528\uff0c\u4fdd\u5b58\u597d\u3002<\/p>\n\n\n\n<p>\u8bb0\u4e0bnode\u8282\u70b9\u52a0\u5165master\u7684\u547d\u4ee4\uff1a<\/p>\n\n\n\n<p>&nbsp;kubeadm join 192.168.23.10:6443 &#8211;token 2ax0m9.qbu5gri5c9rare3i&nbsp;&nbsp;&nbsp;&nbsp;&#8211;discovery-token-ca-cert-hash sha256:ea68c3242205dfddb052d60b0d79dc552f5dda5aa9e6e367b6075b53a59dabc2<\/p>\n\n\n\n<p>\u5982\u679c\u6ca1\u6709\u8bb0\u4e0b\u53ef\u4ee5\u7528\u4ee5\u4e0b\u547d\u4ee4\u91cd\u65b0\u751f\u6210\uff1a<\/p>\n\n\n\n<p>kubeadm token create &#8211;print-join-command 2&gt;&amp;1|tail -n 1<\/p>\n\n\n\n<p>\u5341\u3001\u914d\u7f6emaster\u8ba4\u8bc1<\/p>\n\n\n\n<p># master\u8282\u70b9\u670d\u52a1\u5668\u6267\u884c<\/p>\n\n\n\n<p>echo &#8216;export KUBECONFIG=\/etc\/kubernetes\/admin.conf&#8217; &gt;&gt; \/etc\/profile<\/p>\n\n\n\n<p>. \/etc\/profile<\/p>\n\n\n\n<p>\u5341\u4e00\u3001\u5b89\u88c5\u7f51\u7edc\u7ec4\u4ef6<\/p>\n\n\n\n<p># master\u8282\u70b9\u670d\u52a1\u5668\u6267\u884c<\/p>\n\n\n\n<p>yum install -y wget<\/p>\n\n\n\n<p>#\u4e0b\u8f7d\u6700\u65b0\u7684flannel\u914d\u7f6e\u6587\u4ef6<\/p>\n\n\n\n<p>wget<a href=\"https:\/\/raw.githubusercontent.com\/coreos\/flannel\/master\/Documentation\/kube-flannel.yml\">https:\/\/raw.githubusercontent.com\/coreos\/flannel\/master\/Documentation\/kube-flannel.yml<\/a><\/p>\n\n\n\n<p>kubectl apply -f kube-flannel.yml<\/p>\n\n\n\n<p>\u5341\u4e8c\u3001\u5907\u4efd\u955c\u50cf\u4f9b\u5176\u4ed6\u8282\u70b9\u4f7f\u7528<\/p>\n\n\n\n<p>docker save `docker images |egrep &#8220;(proxy|apiserver|controller-manager|scheduler|etcd|coredns|pause)&#8221;|awk &#8216;\/k8s.gcr.io\/{printf&#8221;%s &#8220;,$1}&#8217;` &gt;k8s_imagesv1.19.0.tar<\/p>\n\n\n\n<p>\u5341\u4e09\u3001\u62f7\u8d1d\u955c\u50cf\u5230node\u8282\u70b9\uff0c\u5bfc\u5165\u955c\u50cf<\/p>\n\n\n\n<p>docker load &lt; k8s_imagesv1.19.0.tar<\/p>\n\n\n\n<p>\u5341\u56db\u3001\u5728node*\u8282\u70b9\u4e0a\u6267\u884c\u52a0\u5165\u96c6\u7fa4\u547d\u4ee4<\/p>\n\n\n\n<p>kubeadm join 192.168.23.10:6443 &#8211;token 2ax0m9.qbu5gri5c9rare3i&nbsp;&nbsp;&nbsp;&nbsp;&#8211;discovery-token-ca-cert-hash sha256:ea68c3242205dfddb052d60b0d79dc552f5dda5aa9e6e367b6075b53a59dabc2<\/p>\n\n\n\n<p>\u5341\u4e94\u3001\u5728\u8be5\u96c6\u7fa4\u4e0a\u9762\u6267\u884c\u4e1a\u52a1\u5c42\u9762\u7684\u955c\u50cf\u64cd\u4f5c<\/p>\n\n\n\n<p>\u65b0\u5efanginx.yml<\/p>\n\n\n\n<p>apiVersion: apps\/v1<\/p>\n\n\n\n<p>kind: Deployment<\/p>\n\n\n\n<p>metadata:<\/p>\n\n\n\n<p>&nbsp;name:www<\/p>\n\n\n\n<p>spec:<\/p>\n\n\n\n<p>&nbsp;selector:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;matchLabels:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app: nginx<\/p>\n\n\n\n<p>&nbsp;replicas: 3<\/p>\n\n\n\n<p>&nbsp;template:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;metadata:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app: nginx<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;spec:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;containers:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211; name: nginx<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image: nginx<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagePullPolicy: IfNotPresent<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ports:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211; containerPort: 80<\/p>\n\n\n\n<p>&nbsp;kubectl apply -f nginx.yaml<\/p>\n\n\n\n<p>deployment.apps\/www configured<\/p>\n\n\n\n<p>\u6269\u5bb9\uff1a<\/p>\n\n\n\n<p>kubectl scale &#8211;current-replicas=3 &#8211;replicas=6 deployment\/www<\/p>\n\n\n\n<p>deployment.apps\/www scaled<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001Master\u8282\u70b9\u3001Node\u8282\u70b9\u51c6\u5907\u5de5\u4f5c 1.\u5173\u95edfirewalld\u3001selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i &#8216;s\/^SELINUX=.*\/SELINUX=disabled\/&#8217; \/etc\/selinux\/config 2.\u8bbe\u7f6e\u7cfb\u7edf\u65f6\u533a\uff0c\u540c\u6b65\u7cfb\u7edf\u65f6\u95f4 timedatectl set-timezone Asia\/Shanghai systemctl enable &#8211;now chronyd chronyc makestep 3.\u914d\u7f6e\u4e3b\u673a\u4e92\u4fe1 ssh-keygen ssh-copy-id \u4e8c\u3001\u7981\u7528swap swapoff -a sed -i &#8216;\/swap\/s\/^\/#\/g&#8217; \/etc\/fstab \u4e09\u3001\u90e8\u7f72docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager &#8211;add-repohttp:\/\/mirrors.aliyun.com\/docker-ce\/linux\/centos\/docker-ce.repo yum list docker-ce &#8211;showduplicates | sort -r|tail -1 yum install docker-ce-19.03.13-3.el8 docker-ce-cli-19.03.13-3.el8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-160","post","type-post","status-publish","format-standard","hentry","category-dockerkubernetes"],"_links":{"self":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=160"}],"version-history":[{"count":1,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/160\/revisions"}],"predecessor-version":[{"id":161,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/160\/revisions\/161"}],"wp:attachment":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}