查看linux系统信息
查看内核版本信息
cat /proc/version
Linux version 4.4.0-150-generic (buildd@lgw01-amd64-036) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #176-Ubuntu SMP Wed May 29 18:56:26 UTC 2019
查看cpu信息
详细信息 cat /proc/cpuinfo
查看cpu个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
查看cpu中core个数 cat /proc/cpuinfo| grep "cpu cores"| uniq
查看逻辑CPU的个数 cat /proc/cpuinfo| grep "processor"| wc -l
查看内存大小
以mb为单位显示内存信息 free -g
更详细的内存信息 cat /proc/meminfo
查看磁盘大小
fdisk -l
hostname | 身份 | linux版本信息 | CPU个数 ,逻辑核数 | 内存大小 | 硬盘大小 |
---|---|---|---|---|---|
ip-172-31-11-34 | master | Linux version 4.4.0-150-generic Ubuntu 16.04.10 | 1,8 | 32945976 kB | 200G |
ip-172-31-8-82 | node1 | Linux version 4.4.0-150-generic Ubuntu 16.04.10 | 1,8 | 32945976 kB | 200G |
开始前 一些系统参数
关闭swap
sudo swapoff -a
因为es在运行的过程中需要使用大量的文件,所以需要设置下面的值。
sysctl -w vm.max_map_count=262144
前期准备,下载各种必要工具
使用清华软件镜像源
- 先备份一份
/etc/apt/sources.list
- 使用以下内容替换原文件内容
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
阿里云镜像源安装kubeadm
sudo apt-get update && sudo apt-get install -y apt-transport-https
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
kubeamd版本 | kubectl版本 |
---|---|
v1.15.0 | v1.15.0 |
安装Docer
官方安装教程
有旧版本的Docker可以先删除
sudo apt-get remove docker docker-engine docker.io
- 更新apt包索引:
$ sudo apt-get update
- 安装包以允许apt通过HTTPS使用存储库
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
- 添加Docker的官方GPG密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通过搜索指纹的最后8个字符,验证您现在拥有带指纹的密钥 。
$ sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
- 使用以下命令设置稳定存储库。
lsb_release -cs
子命令返回Ubuntu发行版的名称,例如xenial。
dpkg --print-architecture
查看本机的系统架构
- 国内环境极大可能下载速度会很慢,所以根据需要可以使用清华镜像(镜像网站)(!注意,如果使用了以下链接之后还是很慢,需要将/etc/apt/sources.list文件里后面先添加的有关docker的依赖删除干净再重新添加)
清华镜像
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
阿里云
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
以下是官网的 x86_64 / amd64(其他的看官网)
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
- 再次更新apt包索引
$ sudo apt-get update
- 安装最新版本的Docker CE,或转到下一步安装特定版本。任何现有的Docker安装都将被替换。
$ sudo apt-get install docker-ce
开启服务
` sudo systemctl enable docker && sudo systemctl start docker && sudo systemctl enable kubelet && sudo systemctl start kubelet`
下载k8s所需镜像,使用阿里云镜像,kubeadm config images list查看k8s所需镜像列表
sudo cat ./pull.sh
for i in `kubeadm config images list`; do
imageName=${i#k8s.gcr.io/}
sudo docker pull registry.aliyuncs.com/google_containers/$imageName
sudo docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
sudo docker rmi registry.aliyuncs.com/google_containers/$imageName
done;
开启k8s集群
kubeadm
master节点 apiserver-advertise-address需改为本机的ip地址(集群通常是内网集群,所以这里使用内网ip),–pod-network-cidr为flannel网络网段
kubeadm init --apiserver-advertise-address=$MASTERTIP --pod-network-cidr=10.244.0.0/16
运行成功之后,会显示让节点加入的命令
kubeadm join $MASTERTIP --token kn2h8w.o6bs4ltxsgycqj72 \
--discovery-token-ca-cert-hash sha256:5ff95cb03074490344263d391cc09474349e32c67e39e98137a8c2660a4c6752
要开始使用集群,您需要以普通用户的身份运行以下代码
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
以上是在当前用户的home目录下放置config配置文件,以后每次重置都需要记得手动删除。 如果是以root的身份运行,也可以使用如下命令,直接设置文件的环境变量,reset的时候也不用手动删除
export KUBECONFIG=/etc/kubernetes/admin.conf
安装网络插件
可以查看官网,查询可使用的网络插件 https://kubernetes.io/docs/concepts/cluster-administration/addons/
这里使用flannel,注意init的时候需要指定–pod-network-cidr=10.244.0.0/16
sysctl net.bridge.bridge-nf-call-iptables=1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/62e44c867a2846fefb68bd5f178daf4da3095ccb/Documentation/kube-flannel.yml
可以使用kubectl get all --all-namespaces -o wide
查看插件是否正常running
可能遇到的问题1: 这里需要注意查看一下如果coredns无法正常启动,查看状态和日志,显示如下
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system pod/coredns-5c98db65d4-pxh97 0/1 CrashLoopBackOff 1 9s 10.244.0.5 ecs-669b-0004 <none> <none>
kube-system pod/coredns-5c98db65d4-zblxs 0/1 CrashLoopBackOff 1 9s 10.244.0.4 ecs-669b-0004 <none> <none>
2019-07-09T06:05:23.161Z [INFO] plugin/reload: Running configuration MD5 = 5d5369fbc12f985709b924e721217843
2019-07-09T06:05:24.161Z [FATAL] plugin/loop: Loop (127.0.0.1:52654 -> :53) detected for zone ".", see https://coredns.io/plugins/loop#troubleshooting. Query: "HINFO 4921785811699231631.4339249961338351183."
查看日志,提示回环了。点击查看他给的连接说是插件在一个上游dns服务器中检测到无限转发循环。查看文件cat /etc/resolv.conf
里面的nameservice为127.0.0.1,所以CoreDns直接向自己转发请求。
解决方法
修改/etc/reslov.conf文件中的nameservice,可以将其修改为8.8.8.8,这是Google提供的免费DNS服务器的IP地址。删除该pod后正常运行。
可能遇到的问题2 pulling image “quay.io/coreos/flannel:v0.11.0-amd64” 失败,使用其他镜像源
sudo docker pull jmgao1983/flannel:v0.11.0-amd64
docker tag jmgao1983/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
节点加入集群
节点上也要安装kubelet kubeadm kubectl docker, 安装好后,可以在master节点上使用kubeadm token create --print-join-command
查看节点加入命令,在node节点上输入join命令即可加入集群。
可能遇到node节点上镜像无法正常拉取,查看对应缺失的部分,使用相应的阿里镜像源。
使用命令kubectl get nodes
查看节点
root@1:/etc/apt# kubectl get nodes
NAME STATUS ROLES AGE VERSION
instance-n7h7vete-1 Ready master 158m v1.15.0
instance-n7h7vete-2 Ready <none> 8m48s v1.15.0
主节点上也调度Pod
处于安全考虑,一般情况下master节点是不调度pod的。可以使用命令kubectl taint nodes --all node-role.kubernetes.io/master-
使其能运行pod
为了让pod可以在特定的node上运行,我们可以给node打标签。 使用命令kubectl label nodes $NODENAME key=value
如
kubectl label nodes instance-n7h7vete-2 k8s=node
可以使用如下命令查看node的标签
kubectl get nodes --show-labels