准备工作

准备三台虚拟机centos7

所有节点配置hosts,修改/etc/hosts如下:

cat >> /etc/hosts << EOF
192.168.0.10 k8s-master
192.168.0.11 k8s-node1
192.168.0.12 k8s-node2
EOF

分别ping下测试,如下:

ping k8s-master

ping k8s-node1

ping k8s-node2

修改主机名字:
将192.168.0.10 的主机修改为 hostnamectl set-hostname k8s-master

将192.168.0.11 的主机修改为 hostnamectl set-hostname k8s-node1

将192.168.0.12 的主机修改为 hostnamectl set-hostname k8s-node2

使用xshell,右键点击发送键输入到所有会话

# yum 更新
sudo yum update -y

# tab 命令补全
sudo yum install -y bash-completion
# wget
sudo yum install -y wget
# vim 编辑器
sudo yum install -y vim-enhanced
# 网络工具
sudo yum install -y net-tools
# gcc 编译器
sudo yum install -y gcc

#1关闭防火墙
systemctl stop firewalld
systemctl disable firewalld


#2关闭selinux  因为永久关闭需要重启才有效,所以这里两步都要执行
sed -i 's/enforcing/disabled/' /etc/selinux/config
临时关闭
setenforce 0

#3关闭 swap 同上,两步都要执行
#永久关闭
vi /etc/fstab
# 注释掉swap这行
# /dev/mapper/centos-swap swap swap defaults 0 0
临时关闭
swapoff -a

#4关闭 NetworkManager
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y bash-completion.noarch
yum install -y net-tools vim lrzsz wget tree screen lsof tcpdump

#4关闭 postfix.service
systemctl stop postfix.service
systemctl disable postfix.service

master节点安装

1.安装etcd服务,用于存储k8s数据的。

yum install -y etcd
vim /etc/etcd/etcd.conf
systemctl start etcd
systemctl enable etcd
#测试下
etcdctl -C http://192.168.0.10:2379 cluster-health

2.安装kubernetes-master

yum install kubernetes-master.x86_64 -y
vim /etc/kubernetes/apiserver 

apiserver配置修改这四项

controller-manager和scheduler共用/etc/kube/config文件,配置如下
上图改为下图

启动并设置为开机自启动

systemctl start kube-apiserver.service  
systemctl enable kube-apiserver.service  

systemctl start kube-controller-manager.service  
systemctl enable kube-controller-manager.service

systemctl start kube-scheduler.service 
systemctl enable kube-scheduler.service 

检查kubectl状态

kubectl get componentstatus

kubectl get componentstatus

node节点安装kubernetes-node

yum install kubernetes-node.x86_64 -y

安装时间比较长,因为会自动安装老版本的docker

vim /etc/kubernetes/config 

改为

vim /etc/kubernetes/kubelet 

改为

不用启动docker,只要启动kubelet.service,就会自动启动docker 

systemctl start kubelet.service
systemctl restart kubelet.service
systemctl enable kubelet.service
systemctl status kubelet.service

再启动

systemctl start kube-proxy.service
systemctl restart kube-proxy.service
systemctl enable kube-proxy.service
systemctl status kube-proxy.service

回到master节点,查询所有节点

kubectl get nodes

至此k8s的主节点和node节点安装完成。

Docker常用命令

# docker系统操作
# 启动、关闭、重启docker
systemctl start docker
systemctl stop docker
systemctl restart docker
# 设置docker开机自启动
systemctl enable docker
# 查看docker信息
docker version
docker info

# 镜像
# 从镜像仓库拉取镜像
docker pull IP:Port/imageName:imageTag
docker pull 192.168.1.180:5000/aengus/flow:v1.0
# 如果不使用IP:Port,默认从docker官方仓库拉取
docker pull nginx
# 查看所有镜像
docker images
# 删除镜像(不被任何容器使用方可删除)
docker rmi imageName
# 强制删除镜像
docker image rm imageName
# 使用Dockerfile制作镜像
docker build -t imageName:imageTag .
# 为镜像打标签
docker tag imageName:imageTag IP:Port/tagedImageName:tagedImageTag
# 向私有仓库推送镜像
docker push IP:Port/tagedImageName:tagedImageTag

# 容器
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a
# 进入容器(只能进入正在运行的容器,-it后面跟容器id)
docker exec -it b648cde72e9c /bin/bash
# 如果上条命令不能进入,可以尝试
docker exec -it b648cde72e9c /bin/sh
# 查看容器日志
docker logs -f containerId
# 启动容器
docker run -itd -p 5000:5000 --restart always -v /opt/data/registry/:/var/lib/registry --name registry registry 
# -i: 以交互模式运行容器; -t: 为容器重新分配一个伪输入终端 -it通常连用。 -d:后台运行容器; -p:指定端口映射 宿主机端口:容器端口; --restart always:在容器退出时总是重启; -v:目录映射 宿主机目录:容器目录; --name:容器名字 最后的registry指定使用的镜像为registry
# 停止容器
docker stop containerId
# 删除容器
docker rm -f containerId
# 启动容器
docker start containerId
# 重启容器
docker restart containerId
#  删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
# 清除所有无容器使用的镜像和容器,包括容器临时停止。此命令会删除无用容器,再删除无用镜像,需慎用
docker system prune -a

K8S常用命令

# 查看命名空间
kubectl get ns
# 创建命名空间
kubectl create namespace heu

# kubectl语法
kubectl [command] [TYPE] [NAME] [flags]
# command:指定要在资源上执行的操作例如create、get、describe、delete、apply等; type:指定资源类型(pod、node、services、deployment); name: 指定资源名称; flags:可选参数,例如使用-n指定命名空间

# 以下命令均为操作某一命名空间下的资源
# 查看资源命令 get
# 查看指定命名空间下的pod
kubectl get pod -n heu
# 查看指定命名空间下的deployment
kubectl get deployment-n heu
# 查看指定命名空间下的service
kubectl get service -n heu
# 查看指定命名空间下的configMap
kubectl get configmap -n heu
# 查看指定命名空间下的secret
kubectl get secret -n heu

# 查看资源详细信息 describe
kubectl describe pod mynginx -n heu  #查看pod的具体运行情况
kubectl describe deployment mynginx -n heu   #了解deployment的详细信息
kubectl describe replicaset mynginx -n heu  #了解replicaset的详细信息
kubectl describe secret mynginx -n heu    #查看secret信息
kubectl describe configmap mynginx -n heu  #查看configmap信息

# 通过配置文件部署资源
kubectl apply -f gateway.yaml
# 查看pod日志:
kubectl logs podId -n heu
# 进入容器
kubectl exec -it podId -n heu /bin/bash
# 缩放副本数量
kubectl scale deployment mynginx --replicas=2

# 删除资源 delete 
kubectl delete podmynginx -n heu # 单纯删除pod可能无法删除,原因是deployment会维持重复数量
kubectl delete deployment mynginx -n heu
kubectl delete service mynginx -n heu
kubectl delete configmap mynginx -n heu
# 删除所有
kubectl delete deployment --all -n heu
kubectl delete service --all -n heu
kubectl delete configmap --all -n heu

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐