Skip to content

Commit fa93c7b

Browse files
authored
Merge pull request #24905 from codyhoag/windows-containers
Windows containers GA
2 parents d596925 + 3338ceb commit fa93c7b

File tree

45 files changed

+1342
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1342
-0
lines changed

_topic_map.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,8 @@ Topics:
400400
File: troubleshooting-s2i
401401
- Name: Troubleshooting storage issues
402402
File: troubleshooting-storage-issues
403+
- Name: Troubleshooting Windows container workload issues
404+
File: troubleshooting-windows-container-workload-issues
403405
- Name: Investigating monitoring issues
404406
File: investigating-monitoring-issues
405407
- Name: Diagnosing OpenShift CLI (oc) issues
@@ -766,6 +768,8 @@ Topics:
766768
File: enabling-multicast
767769
- Name: Disabling multicast for a project
768770
File: disabling-multicast
771+
- Name: Configuring hybrid networking
772+
File: configuring-hybrid-networking
769773
- Name: Configuring Routes
770774
Dir: routes
771775
Topics:
@@ -1380,6 +1384,32 @@ Topics:
13801384
- Name: Using remote worker node at the network edge
13811385
File: nodes-edge-remote-workers
13821386
---
1387+
Name: OpenShift for Windows Containers
1388+
Dir: windows_containers
1389+
Distros: openshift-origin,openshift-enterprise,openshift-webscale
1390+
Topics:
1391+
- Name: OpenShift for Windows Containers release notes
1392+
File: windows-containers-release-notes
1393+
- Name: Understanding Windows container workloads
1394+
File: understanding-windows-container-workloads
1395+
- Name: Enabling Windows container workloads
1396+
File: enabling-windows-container-workloads
1397+
- Name: Creating Windows MachineSet objects
1398+
Dir: creating_windows_machinesets
1399+
Topics:
1400+
- Name: Creating a Windows MachineSet object on AWS
1401+
File: creating-windows-machineset-aws
1402+
- Name: Creating a Windows MachineSet object on Azure
1403+
File: creating-windows-machineset-azure
1404+
- Name: Scheduling Windows container workloads
1405+
File: scheduling-windows-workloads
1406+
- Name: Windows node upgrades
1407+
File: windows-node-upgrades
1408+
- Name: Removing Windows nodes
1409+
File: removing-windows-nodes
1410+
- Name: Disabling Windows container workloads
1411+
File: disabling-windows-container-workloads
1412+
---
13831413
Name: Logging
13841414
Dir: logging
13851415
Distros: openshift-enterprise,openshift-webscale,openshift-origin,openshift-dedicated
130 KB
Loading

images/wmco-design.png

168 KB
Loading

installing/installing_aws/installing-aws-network-customizations.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ include::modules/nw-aws-nlb-new-cluster.adoc[leveloffset=+1]
7373

7474
include::modules/nw-operator-cr.adoc[leveloffset=+1]
7575

76+
include::modules/configuring-hybrid-ovnkubernetes.adoc[leveloffset=+1]
77+
78+
[NOTE]
79+
====
80+
For more information on using Linux and Windows nodes in the same cluster, see xref:../../windows_containers/understanding-windows-container-workloads.adoc#understanding-windows-container-workloads[Understanding Windows container workloads].
81+
====
82+
7683
include::modules/installation-launching-installer.adoc[leveloffset=+1]
7784

7885
include::modules/cli-installing-cli.adoc[leveloffset=+1]

installing/installing_azure/installing-azure-network-customizations.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ include::modules/installation-azure-config-yaml.adoc[leveloffset=+2]
4949
// Network Operator specific configuration
5050
include::modules/nw-modifying-operator-install-config.adoc[leveloffset=+1]
5151
include::modules/nw-operator-cr.adoc[leveloffset=+1]
52+
include::modules/configuring-hybrid-ovnkubernetes.adoc[leveloffset=+1]
53+
54+
[NOTE]
55+
====
56+
For more information on using Linux and Windows nodes in the same cluster, see xref:../../windows_containers/understanding-windows-container-workloads.adoc#understanding-windows-container-workloads[Understanding Windows container workloads].
57+
====
5258

5359
include::modules/installation-launching-installer.adoc[leveloffset=+1]
5460

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * support/troubleshooting/troubleshooting-windows-container-workload-issues.adoc
4+
5+
[id="accessing-windows-node-using-rdp_{context}"]
6+
= Accessing a Windows node using RDP
7+
8+
You can access a Windows node by using a Remote Desktop Protocol (RDP).
9+
10+
.Prerequisites
11+
12+
* You installed the Windows Machine Config Operator (WMCO) using Operator Lifecycle Manager (OLM).
13+
* You have created a Windows machine set.
14+
* You have added the key used in the `cloud-private-key` secret and the key used when creating the cluster to the ssh-agent. For security reasons, remember to remove the keys from the ssh-agent after use.
15+
* You have connected to the Windows node link:https://access.redhat.com/solutions/4073041[using an `ssh-bastion` pod].
16+
17+
.Procedure
18+
19+
. Run the following command to set up an SSH tunnel:
20+
+
21+
[source,terminal]
22+
----
23+
$ ssh -L 2020:<windows_node_internal_ip>:3389 \ <1>
24+
core@$(oc get service --all-namespaces -l run=ssh-bastion -o go-template="{{ with (index (index .items 0).status.loadBalancer.ingress 0) }}{{ or .hostname .ip }}{{end}}")
25+
----
26+
<1> Specify the internal IP address of the node, which can be discovered by running the following command:
27+
+
28+
[source,terminal]
29+
----
30+
$ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}
31+
----
32+
33+
. From within the resulting shell, SSH into the Windows node and run the following command to create a password for the user:
34+
+
35+
[source,terminal]
36+
----
37+
C:\> net user <username> * <1>
38+
----
39+
<1> Specify the cloud provider user name, such as `Administrator` for AWS or `capi` for Azure.
40+
41+
You can now remotely access the Windows node at `localhost:2020` using an RDP client.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * support/troubleshooting/troubleshooting-windows-container-workload-issues.adoc
4+
5+
[id="accessing-windows-node-using-ssh_{context}"]
6+
= Accessing a Windows node using SSH
7+
8+
You can access a Windows node by using a secure shell (SSH).
9+
10+
.Prerequisites
11+
12+
* You have installed the Windows Machine Config Operator (WMCO) using Operator Lifecycle Manager (OLM).
13+
* You have created a Windows machine set.
14+
* You have added the key used in the `cloud-private-key` secret and the key used when creating the cluster to the ssh-agent. For security reasons, remember to remove the keys from the ssh-agent after use.
15+
* You have connected to the Windows node link:https://access.redhat.com/solutions/4073041[using an `ssh-bastion` pod].
16+
17+
.Procedure
18+
19+
* Access the Windows node by running the following command:
20+
+
21+
[source,terminal]
22+
----
23+
$ ssh -t -o StrictHostKeyChecking=no -o ProxyCommand='ssh -A -o StrictHostKeyChecking=no \
24+
-o ServerAliveInterval=30 -W %h:%p core@$(oc get service --all-namespaces -l run=ssh-bastion \
25+
-o go-template="{{ with (index (index .items 0).status.loadBalancer.ingress 0) }}{{ or .hostname .ip }}{{end}}")' <username>@<windows_node_internal_ip> <1> <2>
26+
----
27+
<1> Specify the cloud provider username, such as `Administrator` for Amazon Web Services (AWS) or `capi` for Microsoft Azure.
28+
<2> Specify the internal IP address of the node, which can be discovered by running the following command:
29+
+
30+
[source,terminal]
31+
----
32+
$ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}
33+
----
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * support/troubleshooting/troubleshooting-windows-container-workload-issues.adoc
4+
5+
[id="collecting-docker-logs-windows_{context}"]
6+
= Collecting Docker logs for Windows containers
7+
8+
The Windows Docker service does not stream its logs to stdout, but instead, logs to the event log for Windows. You can view the Docker event logs to investigate issues you think might be caused by the Windows Docker service.
9+
10+
.Prerequisites
11+
12+
* You installed the Windows Machine Config Operator (WMCO) using Operator Lifecycle Manager (OLM).
13+
* You have created a Windows machine set.
14+
15+
.Procedure
16+
17+
. SSH into the Windows node and enter PowerShell:
18+
+
19+
[source,terminal]
20+
----
21+
C:\> powershell
22+
----
23+
24+
. View the Docker logs by running the following command:
25+
+
26+
[source,terminal]
27+
----
28+
C:\> Get-EventLog -LogName Application -Source Docker
29+
----
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * support/troubleshooting/troubleshooting-windows-container-workload-issues.adoc
4+
5+
[id="collecting-kube-node-logs-windows_{context}"]
6+
= Collecting Kubernetes node logs for Windows containers
7+
8+
Windows container logging works differently from Linux container logging; the Kubernetes node logs for Windows workloads are streamed to the `C:\k\logs` directory by default. Therefore, you must gather the Windows node logs from that directory.
9+
10+
.Prerequisites
11+
12+
* You installed the Windows Machine Config Operator (WMCO) using Operator Lifecycle Manager (OLM).
13+
* You have created a Windows machine set.
14+
15+
.Procedure
16+
17+
. To view the logs under all directories in `C:\k\logs`, run the following command:
18+
+
19+
[source,terminal]
20+
----
21+
$ oc adm node-logs -l kubernetes.io/os=windows --path= \
22+
/ip-10-0-138-252.us-east-2.compute.internal containers \
23+
/ip-10-0-138-252.us-east-2.compute.internal hybrid-overlay \
24+
/ip-10-0-138-252.us-east-2.compute.internal kube-proxy \
25+
/ip-10-0-138-252.us-east-2.compute.internal kubelet \
26+
/ip-10-0-138-252.us-east-2.compute.internal pods
27+
----
28+
29+
. You can now list files in the directories using the same command and view the individual log files. For example, to view the kubelet logs, run the following command:
30+
+
31+
[source,terminal]
32+
----
33+
$ oc adm node-logs -l kubernetes.io/os=windows --path=/kubelet/kubelet.log
34+
----
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * support/troubleshooting/troubleshooting-windows-container-workload-issues.adoc
4+
5+
[id="collecting-windows-application-event-logs_{context}"]
6+
= Collecting Windows application event logs
7+
8+
The `Get-WinEvent` shim on the kubelet `logs` endpoint can be used to collect application event logs from Windows machines.
9+
10+
.Prerequisites
11+
12+
* You installed the Windows Machine Config Operator (WMCO) using Operator Lifecycle Manager (OLM).
13+
* You have created a Windows machine set.
14+
15+
.Procedure
16+
17+
* To view logs from all applications logging to the event logs on the Windows machine, run:
18+
+
19+
[source,terminal]
20+
----
21+
$ oc adm node-logs -l kubernetes.io/os=windows --path=journal
22+
----
23+
+
24+
The same command is executed when collecting logs with `oc adm must-gather`.
25+
+
26+
Other Windows application logs from the event log can also be collected by specifying the respective service with a `-u` flag. For example, you can run the following command to collect logs for the docker runtime service:
27+
+
28+
[source,terminal]
29+
----
30+
$ oc adm node-logs -l kubernetes.io/os=windows --path=journal -u docker
31+
----

0 commit comments

Comments
 (0)