一、部署
(1)kubeadm工具:
•kubeadm init:初始化一个Master节点
•kubeadm join:将工作节点加入集群
•kubeadm upgrade:升级K8s版本
•kubeadm token:管理 kubeadm join 使用的令牌
•kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改
•kubeadm version:打印 kubeadm 版本
•kubeadm alpha:预览可用的新功能
(2)初始化配置
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.31.61 k8s-master1
192.168.31.62 k8s-node1
192.168.31.63 k8s-node2
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
(3)安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker
配置镜像下载加速器:
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
docker info
添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet
部署Kubernetes Master
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
初始化完成后,最后会输出一个join命令,先记住,下面用。
拷贝kubectl使用的连接k8s认证文件到默认路径:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看工作节点:kubectl get nodes
加入Kubernetes Node
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令
kubeadm join **** --token **** \
--discovery-token-ca-cert-hash sha256:****
默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,可以直接使用命令快捷生成:
kubeadm token create --print-join-command
部署容器网络(CNI)
kubectl apply -f calico.yaml
kubectl get pods -n kube-system
测试kubernetes集群
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
访问地址:http://NodeIP:Port
二、常用命令
使用Deployment控制器部署镜像
kubectl create deployment web --image=nginx --replicas=3
kubectl get deploy,pods
使用service将pod暴露出去
kubectl expose deployment web --port=80 --target-port=80 --type=NodePort
kubectl get service
部署镜像
kubectl apply -f ***.yaml
kubectl create deployment web --image=nginx:1.16 --replicas=3
应用升级
kubectl apply -f ***.yaml
kubectl set image deployment/web nginx=nginx:1.17
水平扩容
修改yaml里replicas值,再apply
kubectl scale deployment web --replicas=10
发布失败回滚
kubectl rollout history deployment/web #查看历史发布版本
kubectl rollout undo deployment/web #回滚上一个版本
kubectl rollout undo deployment/web --to-revision=2 #回滚历史指定版本
应用下线
kubectl delete deploy/web
kubectl delete svc/web
pod命令
创建pod:
kubectl apply -f pod.yaml
或者使用命令:kubectl run nginx --image=nginx
查看pod:
kubectl get pods
kubectl describe pod <Pod名称>
查看日志:
kubectl logs <Pod名称> [-c Container]
kubectl logs <Pod名称> [-c Container] -f
进入容器终端
kubectl exec <Pod名称> [-c Container] --bash
删除Pod
kubectl delete pod <Pod名称>
service命令
创建service
kubectl apply -f service.yaml
查看service
kubectl get service
查看service对应的pod
kubectl get ep
kubectl get service pod1 -o yaml
kubectl get pods -l app=pvc
暴露pod上的标签
kubectl get pods --show-labels
kubectl get ep -w
ss -antp|grep 31871
自动生成yaml文件
kubectl create deployment java-demo --image=** --dry-run -o yaml > web.yaml
kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml > svc.yaml
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。