前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web基础配置篇(十六): Kubernetes集群的安装使用

Web基础配置篇(十六): Kubernetes集群的安装使用

作者头像
品茗IT
发布2020-05-28 16:18:00
1.2K0
发布2020-05-28 16:18:00
举报
文章被收录于专栏:品茗IT品茗IT

Web基础配置篇(十六): Kubernetes集群的安装使用

一、概述

Kubernetes 简称为K8S,是用于自动部署,扩展和管理容器化应用程序的开源系统。Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

现在的云平台,基本上都是基于k8s实现的。

Kubernetes需要用到docker,应该说是Kubernetes本身就是对docker容器的管理。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

如果你厌烦了vmware和vbox,就可以使用docker来做容器,特别方便。

二、准备工作

本文在三台机器上分别安装master,node1和node2.

  1. 需要centos7, cpu至少2核,硬盘至少10g;
  2. 使用vbox虚拟三个机器,一个master,两个node;
  3. 关闭防火墙# 临时关闭 systemctl stop firewalld # 永久关闭 ,然后reboot 重启有效 systemctl disable firewalld
  4. k8s版本是1.6.2
  5. 修改/etc/hosts文件10.247.62.213 k8s.master 10.247.62.221 k8s.node1 10.247.62.181 k8s.node2

我的三台centos7都是新安装的,dvd版本的。

过程中会写出我遇到的一些坑,按照我的方法安装,肯定能安装成功,谨慎观察其他博客的不负责任的搬运工们。

三、安装Docker

需要在Kubernetes集群的所有节点上部署完毕Docker。

3.1 设置国内yum源

设置使用国内Yum源:

代码语言:javascript
复制
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

如果提示: -bash: wget: 未找到命令 是因为没有安装wget.

代码语言:javascript
复制
yum install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.2 Docker版本选择

使用yum list docker-ce.x86_64 --showduplicates | sort -r会列出一系列的docker版本,但是具体选哪个,还是要看下k8s需要哪个。

k8s的CHANGELOG-1.16.md

代码语言:javascript
复制
Unchanged
    The list of validated docker versions remains unchanged.
    The current list is 1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09. (#72823, #72831)

这里标明了支持的docker版本。

3.3 Docker安装
代码语言:javascript
复制
#安装docker
yum -y install docker-ce-18.09.7-3.el7 docker-ce-cli-18.09.7
#设置开机启动
systemctl enable docker && systemctl start docker
#查看版本
docker --version
3.4 cgroup驱动修改是否必要

这里告诉你,我安装的版本没强制要求修改!

很多博客都改了这玩意儿,设置cgroup驱动使用systemd,k8s是推荐使用systemd,可是对于需要看博客安装的入门人员来说,多一个配置,就是多一个负担。

所以,不建议修改。

可以查看docker的Cgroup

代码语言:javascript
复制
docker info | grep 'Cgroup Driver'

结果是: Cgroup Driver: cgroupfs

可以查看k8s的Cgroup:

代码语言:javascript
复制
systemctl show --property=Environment kubelet | cat 

结果是:

代码语言:javascript
复制
Environment=KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml

没有指明!如果指明了你就要把它们修改为一致的。

如果非要修改Cgroup,下面是修改方法:

修改或创建/etc/docker/daemon.json,加入下面的内容:

代码语言:javascript
复制
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

四、安装kubadm和kubelet

在Kubernetes集群的所有节点上部署完毕Docker后,还需要全部部署kubeadm和kubelet,其中kubeadm是管理工具,kubelet是一个服务,用于启动Kubernetes对应的服务。

4.1 设置kubernetes YUM仓库

view /etc/yum.repos.d/kubernetes.repo打开文件,写入以下内容:

代码语言:javascript
复制
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
4.2 安装1.16.2版本
代码语言:javascript
复制
yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2 ipvsadm
4.3 配置kubelet

默认情况下,Kubelet不允许所在的主机存在交换分区,后期规划的时候,可以考虑在系统安装的时候不创建交换分区,针对已经存在交换分区的可以设置忽略禁止使用Swap的限制,不然无法启动Kubelet。

代码语言:javascript
复制
[root@k8s ~]# view /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

如果想关闭SWAP,执行命令(可以不关闭):

代码语言:javascript
复制
swapoff -a
4.4 设置内核参数

view /etc/sysctl.d/k8s.conf新建文件。写入下面内容:

代码语言:javascript
复制
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

使配置生效:sysctl --system

4.5 启动kubelet并设置开机启动

systemctl enable kubelet && systemctl start kubelet

以上步骤需要在Kubernetes的所有节点上执行,本实验环境是需要在master、node1、node2三台机器上均安装Docker、kubeadm、kubelet

五、集群Master部署

这一章节都是master上的安装和配置。

5.1 初始化Master

使用以下命令初始化mater:

代码语言:javascript
复制
kubeadm init \
  --kubernetes-version=v1.16.2 \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=10.247.62.213 \
  --ignore-preflight-errors=Swap

注意,这里的

  • kubernetes-version是安装的版本;
  • pod-network-cidr是pod的网络ip,不要和当前ip地址用同一个网段,不然会出错,可以使用10.244.0.0/16这种。
  • apiserver-advertise-address是master的ip地址。建议把第一个网卡设置成这个地址。
  • ignore-preflight-errors=Swap,这个必须要,是忽略swap未关闭的错误,如果已经关闭就不需要了。

开始执行:

代码语言:javascript
复制
[root@localhost ~]# kubeadm init \
>   --kubernetes-version=v1.16.2 \
>   --pod-network-cidr=10.244.0.0/16 \
>   --apiserver-advertise-address=10.247.62.213 \
>   --ignore-preflight-errors=Swap
[init] Using Kubernetes version: v1.16.2
[preflight] Running pre-flight checks
    [WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
    [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
    [WARNING Swap]: running with swap on is not supported. Please disable swap
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'

等一会儿,提示拉取镜像失败。拉取的镜像如下:

代码语言:javascript
复制
k8s.gcr.io/kube-apiserver:v1.16.2
k8s.gcr.io/kube-controller-manager:v1.16.2
k8s.gcr.io/kube-scheduler:v1.16.2
k8s.gcr.io/kube-proxy:v1.16.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2

k8s.gcr.io的东西完全拉不下来。

5.2 拉取镜像

因为上面k8s.gcr.io的东西完全拉不下来。需要换个地址拉取镜像。

从docker的其他地址拉取镜像:

代码语言:javascript
复制
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.16.2
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.2
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.16.2
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.16.2
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd-amd64:3.3.15-0
docker pull coredns/coredns:1.6.2

重命名:

代码语言:javascript
复制
docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.16.2 k8s.gcr.io/kube-apiserver:v1.16.2
docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.2 k8s.gcr.io/kube-controller-manager:v1.16.2
docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.16.2 k8s.gcr.io/kube-scheduler:v1.16.2
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd-amd64:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker tag coredns/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2

删除旧镜像:

代码语言:javascript
复制
docker rmi mirrorgooglecontainers/kube-apiserver-amd64:v1.16.2
docker rmi mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.2
docker rmi mirrorgooglecontainers/kube-scheduler-amd64:v1.16.2
docker rmi mirrorgooglecontainers/kube-proxy-amd64:v1.16.2
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd-amd64:3.3.15-0
docker rmi coredns/coredns:1.6.2
5.3 拉取镜像后重新执行初始化

跟上面的命令一样,执行init命令:

代码语言:javascript
复制
kubeadm init \
  --kubernetes-version=v1.16.2 \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=10.247.62.213 \
  --ignore-preflight-errors=Swap

当看到下面的日志时,表示master已经初始化成功了。

代码语言:javascript
复制
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 10.247.62.213:6443 --token 90in5x.psdlm2z347221z2t \
    --discovery-token-ca-cert-hash sha256:56db413a64dd1feb39dff8805acfee130000c452555e10940135025a292e9556 

如果过程中有写错或出错,可以使用kubeadm reset重置。

5.4 Master配置

上面的日志中有三条命令要执行下:

代码语言:javascript
复制
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

不用做修改,直接执行即可。

5.5 查看已安装
代码语言:javascript
复制
# 查看节点
kubectl get nodes
# 查看pods,可以详细列出master及node上面已经安装的pod详细情况
kubectl get pods --all-namespaces -o wide
# 查看kubelet日志
journalctl -f -u kubelet
5.6 安装网络插件

Master节点NotReady的原因就是因为没有使用任何的网络插件,此时Node和Master的连接还不正常。目前最流行的Kubernetes网络插件有Flannel、Calico、Canal。

先尝试安装Canal:

代码语言:javascript
复制
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/canal.yaml

死活安装不上,选择安装flannel:

先删除之前安装的canal,看着烦:

代码语言:javascript
复制
kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/canal.yaml

下载kube-flannel.yml:

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml这个地址下载,但是这个地址可能下载不了,明明是github地址,可以到github上找到coreos/flannel项目的master分支下的Documentation/kube-flannel.yml文件,复制下来就行。

安装flannel,这个使用的是本地文件了:

代码语言:javascript
复制
kubectl apply -f kube-flannel.yml
5.7 查看master当前pods
代码语言:javascript
复制
[root@k8s ~]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                 READY   STATUS              RESTARTS   AGE     IP              NODE         NOMINATED NODE   READINESS GATES
kube-system   coredns-5644d7b6d9-8lgrm             1/1     Running             0          8m22s   10.244.0.2      k8s.master   <none>           <none>
kube-system   coredns-5644d7b6d9-jrlrt             1/1     Running             0          8m22s   10.244.0.3      k8s.master   <none>           <none>
kube-system   etcd-k8s.master                      1/1     Running             0          7m42s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-apiserver-k8s.master            1/1     Running             0          7m30s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-controller-manager-k8s.master   1/1     Running             0          7m35s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-flannel-ds-amd64-s25cn          1/1     Running             0          6m18s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-proxy-v4ktn                     1/1     Running             0          8m22s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-scheduler-k8s.master            1/1     Running             0          7m33s   10.247.62.213   k8s.master   <none>           <none>

如果status是Pending、ContainerCreating、ImagePullBackOff 都表明 Pod 没有就绪,Running 才是就绪状态。

六、Node节点部署

如果上面没有关闭防火墙,这里一定要关闭了,不然不行的咯。

systemctl stop firewalld关闭防火墙。

需要在每个node节点上执行下面的操作。

6.1 加入Master

在master初始化的时候,日志的最后一句是: kubeadm join 10.247.62.213:6443 --token 90in5x.psdlm2z347221z2t \ --discovery-token-ca-cert-hash sha256:56db413a64dd1feb39dff8805acfee130000c452555e10940135025a292e9556

我这里这样执行:

代码语言:javascript
复制
kubeadm join 10.247.62.213:6443 --token 90in5x.psdlm2z347221z2t \
    --discovery-token-ca-cert-hash sha256:56db413a64dd1feb39dff8805acfee130000c452555e10940135025a292e9556 \
    --ignore-preflight-errors=Swap

注意,这里的:

  • token和discovery-token-ca-cert-hash 都是Master初始化显示的那个,应该说可以直接把那一句拷过来。
  • ignore-preflight-errors=Swap,关闭swap分区错误提示。6.2 查看节点及pods状态
代码语言:javascript
复制
[root@k8s ~]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                 READY   STATUS              RESTARTS   AGE     IP              NODE         NOMINATED NODE   READINESS GATES
kube-system   coredns-5644d7b6d9-8lgrm             1/1     Running             0          8m22s   10.244.0.2      k8s.master   <none>           <none>
kube-system   coredns-5644d7b6d9-jrlrt             1/1     Running             0          8m22s   10.244.0.3      k8s.master   <none>           <none>
kube-system   etcd-k8s.master                      1/1     Running             0          7m42s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-apiserver-k8s.master            1/1     Running             0          7m30s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-controller-manager-k8s.master   1/1     Running             0          7m35s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-flannel-ds-amd64-82x9f          0/1     Init:0/1            0          6m18s   10.247.62.181   k8s.node2    <none>           <none>
kube-system   kube-flannel-ds-amd64-c8rtk          0/1     Init:0/1            0          6m18s   10.247.62.221   k8s.node1    <none>           <none>
kube-system   kube-flannel-ds-amd64-s25cn          1/1     Running             0          6m18s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-proxy-phtm7                     0/1     ContainerCreating   0          6m42s   10.247.62.221   k8s.node1    <none>           <none>
kube-system   kube-proxy-px8hs                     0/1     ContainerCreating   0          6m23s   10.247.62.181   k8s.node2    <none>           <none>
kube-system   kube-proxy-v4ktn                     1/1     Running             0          8m22s   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-scheduler-k8s.master            1/1     Running             0          7m33s   10.247.62.213   k8s.master   <none>           <none>

[root@k8s ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE     VERSION
k8s.master   Ready      master   3m11s   v1.16.2
k8s.node1    NotReady   <none>   73s     v1.16.2
k8s.node2    NotReady   <none>   54s     v1.16.2

这时候,我们会发现,k8s.node1和k8s.node2的节点状态都是NotReady,而且pods的状态不是Running就绪状态。说明没加入成功

最后发现是node上拉不下来镜像,下面讲下排错历程。

6.3 排错历程
6.3.1 尝试重新加入(无效)

这时候,你可能想到重新加入一次:

代码语言:javascript
复制
# master上执行删除节点命令
kubectl delete node k8s.node1
# node上执行reset命令
kubeadm reset

重新加入无效。

6.3.2 查看node日志并搜索解决方案(无效)

使用命令kubectl describe node k8s.node1,查看节点错误日志:

代码语言:javascript
复制
DiskPressure     False   Tue, 29 Oct 2019 14:06:24 +0800   Tue, 29 Oct 2019 12:41:14 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
PIDPressure      False   Tue, 29 Oct 2019 14:06:24 +0800   Tue, 29 Oct 2019 12:41:14 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
Ready            False   Tue, 29 Oct 2019 14:06:24 +0800   Tue, 29 Oct 2019 12:41:14 +0800   KubeletNotReady              runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

错误是runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized:

网上的解决方法(无效):

vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf,

删除最后一行里的$KUBELET_NETWORK_ARGS。

1.6.2版本中,这个文件是不存在的。 这个文件在/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf中。

然而network-plugin并不在里面,在/var/lib/kubelet/kubeadm-flags.env文件中。 添加:

代码语言:javascript
复制
KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1"

重新启动:systemctl enable kubelet && systemctl start kubelet

matser重新初始化,node重新加入,都需要kubeadm reset。

方法无效!

还有说法是在kubectl apply -f kube-flannel.yml之前加入node节点,无效,还是报错:cni.go:237] Unable to update cni config: no networks found in /etc/cni/net.d。

6.3.2 查看pod日志(解决)

搜索错误过程中发现可以使用下面方法查找错误日志:

代码语言:javascript
复制
kubectl --namespace kube-system logs kube-flannel-ds-amd64-82x9f
kubectl describe pod kube-flannel-ds-amd64-82x9f  --namespace=kube-system

错误提示:

代码语言:javascript
复制
  Warning  FailedCreatePodSandBox  18s (x8 over 5m58s)  kubelet, k8s.node2  Failed create pod sandbox: rpc error: code = Unknown desc = failed pulling image "k8s.gcr.io/pause:3.1": Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

原来是镜像拉不下来,浪费这么长时间,垃圾博客害死人。

到node节点上,拉镜像:

代码语言:javascript
复制
docker pull mirrorgooglecontainers/pause:3.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker rmi mirrorgooglecontainers/pause:3.1

终于成功了!

查看pods日志:

代码语言:javascript
复制

Events:
  Type     Reason                  Age                 From                Message
  ----     ------                  ----                ----                -------
  Normal   Scheduled               <unknown>           default-scheduler   Successfully assigned kube-system/kube-flannel-ds-amd64-82x9f to k8s.node2
  Warning  FailedCreatePodSandBox  89s (x8 over 7m9s)  kubelet, k8s.node2  Failed create pod sandbox: rpc error: code = Unknown desc = failed pulling image "k8s.gcr.io/pause:3.1": Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Normal   Pulling                 76s                 kubelet, k8s.node2  Pulling image "quay.io/coreos/flannel:v0.11.0-amd64"
  Normal   Pulled                  29s                 kubelet, k8s.node2  Successfully pulled image "quay.io/coreos/flannel:v0.11.0-amd64"
  Normal   Created                 28s                 kubelet, k8s.node2  Created container install-cni
  Normal   Started                 27s                 kubelet, k8s.node2  Started container install-cni
  Normal   Pulled                  27s                 kubelet, k8s.node2  Container image "quay.io/coreos/flannel:v0.11.0-amd64" already present on machine
  Normal   Created                 27s                 kubelet, k8s.node2  Created container kube-flannel
  Normal   Started                 26s                 kubelet, k8s.node2  Started container kube-flannel
代码语言:javascript
复制

[root@k8s ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s.master   Ready    master   10m     v1.16.2
k8s.node1    Ready    <none>   8m33s   v1.16.2
k8s.node2    Ready    <none>   8m14s   v1.16.2

都是Ready状态,可以欢呼了。

且慢!还有问题!使用kubectl get pods --all-namespaces -o wide命令查看pods,发现节点的kube-proxy和kube-flannel-ds-amd64总是在CrashLoopBackOff和ImagePullBackOff之间变换。

查看pod的描述

代码语言:javascript
复制
kubectl describe pod kube-flannel-ds-amd64-82x9f  --namespace=kube-system
kubectl describe pod kube-proxy-phtm7  --namespace=kube-system

发现:

代码语言:javascript
复制
Failed to pull image "k8s.gcr.io/kube-proxy:v1.16.2": rpc error: code = Unknown

又要拉镜像了,类同上面:

代码语言:javascript
复制
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.16.2
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2
docker rmi mirrorgooglecontainers/kube-proxy-amd64:v1.16.2

每个node节点都执行一遍,然后使用kubectl get pods --all-namespaces -o wide命令查看pods:

代码语言:javascript
复制
[root@k8s ~]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                    READY   STATUS             RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
kube-system   coredns-5644d7b6d9-8lgrm                1/1     Running            0          59m   10.244.0.2      k8s.master   <none>           <none>
kube-system   coredns-5644d7b6d9-jrlrt                1/1     Running            0          59m   10.244.0.3      k8s.master   <none>           <none>
kube-system   etcd-k8s.master                         1/1     Running            0          58m   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-apiserver-k8s.master               1/1     Running            0          58m   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-controller-manager-k8s.master      1/1     Running            0          58m   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-flannel-ds-amd64-82x9f             1/1     Running            13         57m   10.247.62.181   k8s.node2    <none>           <none>
kube-system   kube-flannel-ds-amd64-c8rtk             1/1     Running            13         57m   10.247.62.221   k8s.node1    <none>           <none>
kube-system   kube-flannel-ds-amd64-s25cn             1/1     Running            0          57m   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-proxy-phtm7                        1/1     Running            0          57m   10.247.62.221   k8s.node1    <none>           <none>
kube-system   kube-proxy-px8hs                        1/1     Running            0          57m   10.247.62.181   k8s.node2    <none>           <none>
kube-system   kube-proxy-v4ktn                        1/1     Running            0          59m   10.247.62.213   k8s.master   <none>           <none>
kube-system   kube-scheduler-k8s.master               1/1     Running            0          58m   10.247.62.213   k8s.master   <none>           <none>

又可以欢呼了!

安装完Kubernetes集群了,下一篇讲下如何安装k8s的dashboard界面。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Web基础配置篇(十六): Kubernetes集群的安装使用
  • 一、概述
  • 二、准备工作
  • 三、安装Docker
    • 3.1 设置国内yum源
      • 3.2 Docker版本选择
        • 3.3 Docker安装
          • 3.4 cgroup驱动修改是否必要
          • 四、安装kubadm和kubelet
            • 4.1 设置kubernetes YUM仓库
              • 4.2 安装1.16.2版本
                • 4.3 配置kubelet
                  • 4.4 设置内核参数
                    • 4.5 启动kubelet并设置开机启动
                    • 五、集群Master部署
                      • 5.1 初始化Master
                        • 5.2 拉取镜像
                          • 5.3 拉取镜像后重新执行初始化
                            • 5.4 Master配置
                              • 5.5 查看已安装
                                • 5.6 安装网络插件
                                  • 5.7 查看master当前pods
                                  • 六、Node节点部署
                                    • 6.1 加入Master
                                      • 6.3 排错历程
                                        • 6.3.1 尝试重新加入(无效)
                                        • 6.3.2 查看node日志并搜索解决方案(无效)
                                        • 6.3.2 查看pod日志(解决)
                                    相关产品与服务
                                    容器服务
                                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档