Kubernetes Install Tutorials
事先准备
- 多台Ubuntu 16.04+、CentOS 7或HypriotOS v1.0.1 + 系统
- 每台机器最少1GB+内存
- 集群中所有机器之间网络连接正常
- 每个节点有唯一MAC地址和product_uuid
- 打开某些端口。请参阅以下部分
检查所需端口
Master节点
端口范围 | 用途 |
---|---|
6443 * | Kubernetes API server |
2379-2380 | etcd server client API |
10250 | Kubelet API |
10251 | kube-scheduler |
10252 | kube-controller-manager |
10255 | Read-only Kubelet API (Heapster) |
工作节点
端口范围 | 用途 |
---|---|
10250 | Kubelet API |
10255 | Read-only Kubelet API (Heapster) |
30000-32767 | NodePort Services默认端口范围。 |
Docker 安装
在机器安装Docker,推荐使用1.12 版本(v1.10和v1.11也可以正常使用),1.13和17.03+版本未经过Kubernetes团队的测试和验证。有关安装说明,请参阅Docker官方文档 Docker安装。
kubectl 安装
在所有机器上安装kubectl,可参考: kubectl安装。
使用Kubernetes命令行工具kubectl在Kubernetes上部署和管理应用程序。使用kubectl,可以检查集群资源; 创建,删除和更新组件。
以下是安装kubectl的几种方法。
通过curl安装kubectl二进制文件
MacOS
下载最新版本的命令:
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
要下载特定版本,请使用特定版本替换$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)命令的一部分。
例如,要在MacOS上下载v1.7.0版本,请键入:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.0/bin/darwin/amd64/kubectl
使kubectl二进制可执行。
chmod +x ./kubectl
将二进制文件移动到PATH中。
sudo mv ./kubectl /usr/local/bin/kubectl
Linux
下载最新版本的命令:
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
要下载特定版本,请使用特定版本替换$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)命令的一部分。
例如,要在Linux上下载v1.7.0版本,请键入:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.0/bin/linux/amd64/kubectl
使kubectl二进制可执行。
chmod +x ./kubectl
将二进制文件移动到PATH中。
sudo mv ./kubectl /usr/local/bin/kubectl
Windows
从此链接下载最新版本v1.7.0 。
如果curl已安装,请使用以下命令:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.0/bin/windows/amd64/kubectl.exe
要了解最新的稳定版本,请查看 https://storage.googleapis.com/kubernetes-release/release/stable.txt
将二进制文件添加到PATH中。
作为Google Cloud SDK的一部分下载
kubectl可以作为Google Cloud SDK的一部分安装。
- 安装Google Cloud SDK。
- 运行以下命令进行安装kubectl:
gcloud components install kubectl
- 运行kubectl version以验证您安装的验证码是否已经是最新的。
在Ubuntu上安装
kubectl可作为快速应用程序使用。
- 如果您在Ubuntu或其他支持快照包管理器的Linux发行版之一,您可以使用以下安装:
sudo snap install kubectl --classic
- 运行kubectl version以验证您安装的验证码是否已经是最新的。
在MacOS上安装Homebrew
- 如果您使用的是MacOS并使用Homebrew软件包管理器,则可以使用以下命令进行安装:
brew install kubectl
- 运行kubectl version以验证您安装的验证码是否已经是最新的。
在Windows上安装Chocolatey
- 如果您使用的是Windows,并使用Chocolatey软件包管理器,则可以安装:
choco install kubernetes-cli
- 运行kubectl version以验证您安装的验证码是否已经是最新的。
- 配置kubectl以使用远程kubernetes集群:
cd C:\users\yourusername (Or wherever your %HOME% directory is) mkdir .kube cd .kube touch config
使用文本编辑器编辑配置文件。
配置kubectl
为了使kubectl找到并访问Kubernetes集群,需要一个kubeconfig文件,当你使用kube-up.sh创建集群或成功部署Minikube集群时,该文件将自动创建。有关创建集群的更多信息,请参阅入门指南。如果你需要访问未创建的群集,请参阅共享群集访问文档。默认情况下,kubectl配置位于~/.kube/config。
检查kubectl配置
通过获取集群状态来检查kubectl是否正确配置:
$ kubectl cluster-info
如果看到一个URL响应,kubectl被正确配置为访问您的集群。
如果看到类似于以下内容的消息,则kubectl未正确配置:
The connection to the server <server-name:port> was refused - did you specify the right host or port?
启用shell自动完成
kubectl包括支持自动完成,可以节省大量打字!
完成脚本本身是由kubectl生成的,所以你通常只需要从你的配置文件中调用它。
这里提供常见的例子。有关详细信息,请咨询kubectl completion -h。
在Linux上,使用bash
要将kubectl自动完成添加到当前shell,请运行source <(kubectl completion bash)。
要将kubectl自动完成添加到你的配置文件中,因此将在以后的shell中自动加载运行:
echo "source <(kubectl completion bash)" >> ~/.bashrc
在MacOS上,使用bash
在macOS上,你需要首先通过Homebrew安装bash-completion支持:
## If running Bash 3.2 included with macOS brew install bash-completion ## or, if running Bash 4.1+ brew install bash-completion@2
按照brew输出的“部分注意事项”,将正确的bash完成路径添加到本地的.bashrc中。
如果你使用Homebrew指令安装了kubectl,那么kubectl完成应该立即开始工作。
如果你手动安装了kubectl,则需要将kubectl自动完成添加到bash-completion中:
kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl
Homebrew项目独立于kubernetes,所以bash完成包不能保证工作。
kubelet和kubeadm 安装
在所有机器上安装以下软件包:
- kubelet
- kubeadm
注意:如果机器上已经安装了kubeadm,则应需要apt-get update && apt-get upgrade或者yum update获得最新版本的kubeadm。如果想了解不同版本的kubeadm,请参考
配置机器:
- SSH登录主机。
- 如果使用的是Ubuntu或HypriotOS,请运行:
apt-get update && apt-get install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm
国内源
# 使得 apt 支持 ssl 传输 apt-get update && apt-get install -y apt-transport-https # 下载 gpg 密钥 curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - # 添加 k8s 镜像源 cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF # 更新源列表 apt-get update # 下载 kubectl,kubeadm以及 kubelet apt-get install -y kubelet kubeadm kubectl
- 如果使用的是CentOS,请运行:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF setenforce 0 yum install -y kubelet kubeadm systemctl enable kubelet && systemctl start kubelet
执行完后,kubelet会进入每隔几秒重新启动一次的循环模式,因为kubelet在等待kubeadm发出的命令。
注意:必须使用运行setenforce 0命令来禁用SELinux,因为需要允许容器访问主机文件系统,这是配置pod网络所要求的。(直到kubelet中对SELinux支持得到改进)
kubeadm init 无法拉取镜像解决方法
先阿里云仓库下拉再打标签
registry.aliyuncs.com/google_containers/kube-proxy v1.17.4 6dec7cfde1e5 9 days ago 116MB registry.aliyuncs.com/google_containers/kube-controller-manager v1.17.4 7f997fcf3e94 9 days ago 161MB registry.aliyuncs.com/google_containers/kube-apiserver v1.17.4 2e1ba57fe95a 9 days ago 171MB registry.aliyuncs.com/google_containers/kube-scheduler v1.17.4 5db16c1c7aff 9 days ago 94.4MB registry.aliyuncs.com/google_containers/coredns 1.6.5 70f311871ae1 4 months ago 41.6MB registry.aliyuncs.com/google_containers/etcd 3.4.3-0 303ce5db0e90 4 months ago 288MB registry.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 2 years ago 742kB docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.17.4 k8s.gcr.io/kube-proxy:v1.17.4 docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.4 k8s.gcr.io/kube-controller-manager:v1.17.4 docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.4 k8s.gcr.io/kube-apiserver:v1.17.4 docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.4 k8s.gcr.io/kube-scheduler:v1.17.4 docker tag registry.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5 docker tag registry.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:.4.3-0 docker tag registry.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
参考资料
在线学习:www.katacoda.com
中文社区:https://www.kubernetes.org.cn/
中文文档:
https://kubernetes.io/zh/docs/
http://docs.kubernetes.org.cn/
https://www.kubernetes.org.cn/k8s